UnixツールまたはPerlで生成されたsmd5

UnixツールまたはPerlで生成されたsmd5

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.cfglpa_options = std_hash=trueセクションに対応する行を追加しますsmd5:。一般的な方法は使用することですchsec注文する:

chsec -f /etc/security/pwdalg.cfg -s md5 -a std_hash=true

私が理解したところ、これは非標準アルゴリズムを使用して記録されたパスワードを無効にします。

LDAP Solt MD5は遅くないので、良いパスワードハッシュではありません。パスワードを安全にハッシュする方法は?これが何を意味するかを説明します。 BSDおよびAIX "MD5"アルゴリズムは遅いです(理想的には遅いが遅いアルゴリズムよりはるかに優れています)。

関連情報