4

バックエンドを php からノードに移行する必要があります。パスワードのハッシュには、php crypt (デフォルトのランダムソルトを使用) を使用しました。たとえば、パスワード「d1692fab28b8a56527ae329b3d121c52」の場合、ベースに次の暗号化された pw があります ($i$ が指定するように、md5 または sha512 のどちらを使用したかによって異なります) :

$1$7JxJYjJK$oFtCGyVvflspPtxB7YrWP.
$6$CVx6KL5l$wzk3YXlqUaz42Kb9r2lmEJhx/FBUXPRoLWN.20/XMBbgQrhp3vSHkEDF3bJEtpM3M96VZ.AMKatLGSKYZZKNH/

そしてphpでは、 crypt でそれらを確認できます:

echo crypt('d1692fab28b8a56527ae329b3d121c52', '$1$7JxJYjJK$oFtCGyVvflspPtxB7YrWP.');
echo "\n";
echo crypt('d1692fab28b8a56527ae329b3d121c52', '$6$CVx6KL5l$wzk3YXlqUaz42Kb9r2lmEJhx/FBUXPRoLWN.20/XMBbgQrhp3vSHkEDF3bJEtpM3M96VZ.AMKatLGSKYZZKNH/');
echo "\n";

正しい暗号化された pw を返します。

どのノード関数でもそのような結果を得ることができませんでした。私は次のようなものを試しました:

require("crypto").createHmac("md5", "7JxJYjJK").update("d1692fab28b8a56527ae329b3d121c52").digest("base64");

他にもたくさんありますが、成功していません。誰かがこれを行うのを手伝ってもらえますか? MD5 バージョン ($1$) がどうしても必要です。sha512 はいくらかいいでしょう (恐ろしいことはわかっていますが、prod サーバーで使用されたのは md5 バージョンであり、テスト サーバーで使用されたのは sha512 です...)。

4

1 に答える 1

1

プロジェクトの 1 つで、元の crypt_md5() (PHP で使用) を JavaScript に変換しました。ここで見つけることができます:

https://github.com/BlaM/cryptMD5-for-javascript

($1$ のみをサポートしますが、それは少なくとも探しているものの一部です。)

于 2013-10-24T15:58:38.317 に答える