これをチェックしてください:同じバイナリが異なるmd5を生成する
文字列をバイナリとしてエンコードしてmd5を出力します。私は2つのコードベースを持っています:ノードとPHP。
PHP:
<?php
$key="12ab";
$hex_key = pack('H*', $key);
for ($i=0; $i<strlen($hex_key); $i++) {
echo ord(substr($hex_key, $i ,1))."\n";
}
echo md5($hex_key)."\n";
この出力を生成します
/code # php md5.php
18
171
53e035069bdb4f08a666fb7d42f29b15
ノード:
この出力を生成します
/code # node md5.js
18
171
3f83d1a9a01e19e1a85665394f0f5a09
バイナリに同じコードがあり、同じ順序であることがわかります。 同じmd5を持っていないのはどうでしょうか?
http://stackoverflow.com/questions/3450983/will-the-md5-cryptographic-hash-function-output-be-same-in-all-programming -langu – RST
2つの可能性のうちの1つがあります。1.実装の1つでMD5が壊れています。 2.同じ入力を提供していません。私は#2に賭けて、デバッグし、値が期待されるフォーマットで供給され、出力が正しく表示されていることを保証します。 – zaph