ダイジェスト2 cram-md5認証 (module)Digest-HMAC_MD5

back
オプションモジュール
http://search.cpan.org/~gaas/Digest-HMAC-1.01/lib/Digest/HMAC_MD5.pm
Digest::MD5 も必要

MD5 認証(smtp authentication cram-md5)
----
# 関数形式
use MIME::Base64;
use Digest::HMAC_MD5 qw(hmac_md5_hex);

if (defined $ARGV[0] && defined $ARGV[1] && defined $ARGV[2]) {
  print encode_base64($ARGV[0].' '.hmac_md5_hex(decode_base64($ARGV[2]),$ARGV[1]));
} else {
  print "Usage: $0 username password server-challenge\n";
}
----
SMTP-AUTH の cram-md5 メソッドについては、以下の通り。
1. サーバが返すチャレンジとなる文字列を Base64 デコードする
2. デコードされた文字列を、生の認証用パスワードを鍵に MD5 ハッシュを計算
3. 得られたハッシュの前に認証用ユーザ名を付加し、Base64 エンコード
4. 上記の文字列をサーバに送信

back