Perl
smd5 - 由 unix 工具或 perl 生成
我在 Unix 上遇到問題,必須在 smd5 中創建很多密碼,但不知道如何使用一些 unix 工具或 perl 以以下形式生成 smd5 密碼:{smd5}DoZgZ.OE$vSg4ZH7Bpy0BCdXNzBj001
我從來沒有遇到過任何問題,在 md5/sha256/sha512 中使用諸如 openssl 之類的工具在 linux 上生成任何東西
我已經嘗試過使用 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} DoZgZ.OE $vSg4ZH7Bpy0BCdXNzBj001 和字元串更長
AIX 的
{smd5}
格式是一種非標準格式。它是*BSD/Linux/Solaris “MD5”(由 生成的)的一個小變種openssl passwd -1
。我找不到太多關於它的資訊。在文件aix_smd5_fmt_plug.c
. _ 從閱讀程式碼來看,似乎不同之處在於 BSD MD5 變體有效地將字元串$1$
添加到鹽的一個位置,而 AIX 變體沒有。如果您知道 C,那麼修補 OpenSSL 以支持此變體應該不難。
/etc/security/pwdalg.cfg
您可以通過編輯並添加節lpa_options = std_hash=true
中的行來更改 AIX 使用的算法smd5:
。執行此操作的正常方法是使用以下chsec
命令:chsec -f /etc/security/pwdalg.cfg -s md5 -a std_hash=true
據我了解,這會使使用非標準算法記錄的密碼無效。
請注意,LDAP salted MD5 不是一個好的密碼雜湊,因為它並不慢。如何安全地散列密碼?解釋這意味著什麼。BSD 和 AIX “MD5” 算法很慢(理想情況下很慢,但比非慢速算法好得多)。