Perl

smd5 - 由 unix 工具或 perl 生成

  • March 22, 2015

我在 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” 算法很慢(理想情況下很慢,但比非慢速算法好得多)。

引用自:https://unix.stackexchange.com/questions/189990