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からインストール。
あんまりプログラムの長さは変わらんけれども、パスワードのバリエーションがいろいろできますよね。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3149





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


コメントする