Unixに問題があるため、smd5に多くのパスワードを生成する必要がありますが、一部のUnixツールまたはPerlを使用して{smd5}DoZgZ.OE$vSg4ZH7Bpy0BCdXNzBj001形式でsmd5パスワードを生成する方法がわかりません。
opensslなどのツールを使用してLinuxのmd5 / sha256 / sha512で何も生成するのに問題が発生したことはありません。
私は次のようなものを使ってPerlを試しました。
use Digest::MD5;
use MIME::Base64;
$ctx = Digest::MD5->new;
$ctx->add('vwkfA17aF`');
$salt = 'DoZgZ.OE';
$ctx->add($salt);
$hashedPasswd = '{smd5}' . encode_base64($ctx->digest . $salt ,'');
print $hashedPasswd . "\n";
しかし、残念ながら出力はまったく異なります。 {smd5}5zJphaZULO3gnT1pwT1YHERvWmdaLk9F 見えません。塩ここと同じです {smd5}多くのZgZ$vSg4ZH7Bpy0BCdXNzBj001 と文字列が長くなります。
答え1
AIX{smd5}
形式は非標準形式です。これは小さな変形です。*BSD/Linux/Solaris「MD5」(これはによって生成されますopenssl passwd -1
)。私はそれについて多くの情報を見つけることができません。に貢献したコードがあります。ジョン・ザ・リッパー(ジャンボバージョン1.8.0にあります)ファイルから計算aix_smd5_fmt_plug.c
。コードを読むと、違いはBSD MD5バリアントが$1$
ソルトの1つの位置に文字列を効果的に追加するのに対して、AIXバリアントはそうではないことです。 Cを知っていれば、OpenSSLにパッチを適用してこのバリエーションをサポートすることはそれほど難しくありません。
編集により、AIXで使用されるアルゴリズムを変更できます。/etc/security/pwdalg.cfg
lpa_options = std_hash=true
セクションに対応する行を追加しますsmd5:
。一般的な方法は使用することですchsec
注文する:
chsec -f /etc/security/pwdalg.cfg -s md5 -a std_hash=true
私が理解したところ、これは非標準アルゴリズムを使用して記録されたパスワードを無効にします。
LDAP Solt MD5は遅くないので、良いパスワードハッシュではありません。パスワードを安全にハッシュする方法は?これが何を意味するかを説明します。 BSDおよびAIX "MD5"アルゴリズムは遅いです(理想的には遅いが遅いアルゴリズムよりはるかに優れています)。