Perlでパスワード文字列生成にString::Randomを使ってみる
パスワードの再発行ルーチンとか、作っているのですけれども、例えば'9'と'Q'は聞き間違えるからとかいう理由で、パスワードの文字列に使いたくないっていう用件があって、そうすると、パスワードの文字列を限定して生成するっていうことになるのだけれども、これをこんな感じで作っていましたが。
#!/usr/bin/perl
use strict;
use warnings;
use Digest::SHA1;
my $salt = '3gatsu6nichihatokyodeoffkaida';
my $new_password = _make_password();
my $ctx = Digest::SHA1->new;
$ctx->add( $salt.$new_password );
my $password_digest = $ctx->hexdigest;
print "NewPASSWORD: $new_password\n";
print "salted_SHA1: $password_digest\n";
exit;
# パスワード生成
sub _make_password {
my @character
= ( 'A','C','D','F','H','K','L',
'P','R','T','U','X','Y','4','7', );
my $str = q();
my $length = @character;
for (my $i = 0; $i < 8; $i++ ) {
my $x = int(rand $length);
$str .= $character[$x];
}
return $str;
}
__END__
モジュールでString::Random使えば簡単にできることに最近気づいた!
#!/usr/bin/perl
use strict;
use warnings;
use Digest::SHA1;
use String::Random;
my $salt = '3gatsu6nichihatokyodeoffkaida';
my $new_password = _make_password();
my $ctx = Digest::SHA1->new;
$ctx->add( $salt.$new_password );
my $password_digest = $ctx->hexdigest;
print "NewPASSWORD: $new_password\n";
print "salted_SHA1: $password_digest\n";
exit;
# パスワード生成
sub _make_password {
my $sr = String::Random->new;
$sr->{A}
= [ 'A','C','D','F','H','K','L',
'P','R','T','U','X','Y','4','7', ];
return $sr->randpattern('AAAAAAAA');
}
__END__
String::RandomはCPANからインストール。
あんまりプログラムの長さは変わらんけれども、パスワードのバリエーションがいろいろできますよね。
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/19018/47713489
この記事へのトラックバック一覧です: Perlでパスワード文字列生成にString::Randomを使ってみる:






![森田 創: WEB+DB PRESS 総集編 [Vol.1~60]](http://ecx.images-amazon.com/images/I/51aE58LxWlL._SL75_.jpg)
















![: 電子ルーペ ViewPe[ビューペ] 3R-MSV35 マイクロスコープ デジタル顕微鏡 高機能 低価格 読書 植物 研究 肌チェック](http://ecx.images-amazon.com/images/I/41erkiQgAsL._SL75_.jpg)





![: Optimus bright [docomo L-07C] 対応 予備バッテリー 1500mAh BL-44JN](http://ecx.images-amazon.com/images/I/41gjqsDjq%2BL._SL75_.jpg)










![: パンツの穴 [DVD]](http://ecx.images-amazon.com/images/I/21R9SEY1HPL._SL75_.jpg)

















