5

md5sum linux コマンドと CryptoJS の MD5 メソッドを使用するときに、tar ファイルの md5sum を取得して同じ値を生成しようとしています。

JavaScript では (ファイルが HTML フォームに入れられた後):

var reader = new FileReader();

reader.onloadend = function () {
     text = (reader.result);
}

reader.readAsBinaryString(document.getElementById("firmware_firmware").files[0]);

var hash = CryptoJS.MD5(text);

hash.toString();

Linux では次のことを行います。

md5sum name_of_file.tar

現在、これら 2 つは異なる結果を生成します。Linux で md5sum が行うのと同じ方法で、JavaScript を使用して tar ファイルの内容を MD5 化するにはどうすればよいですか?

単純な文字列の場合、md5sum と CryptoJS は同じ値を生成します。

編集: Fred.txt という名前のファイルで、内容が "Fred" の場合、md5sum と CryptoJS の両方が同じ値を生成します: c624decb46fa3d60e824389311b252f6。

update.tar ファイルでは、Linux の md5sum は次のように表示します: 1f046eedb7d8279953d233e590830e4f

Edit2: さらにテストしたところ、7 メガバイトなどの大きなファイル サイズが原因で、これが実際に問題であることが示されました。

4

3 に答える 3

1

これは、ファイルの読み込みが完了せず、ファイルのアップロードが 100% になる前にハッシュが作成されるためだと思います。ハッシュを onloadend イベントに移動してみてください。

var reader = new FileReader();

reader.onloadend = function () {
     var hash = CryptoJS.MD5(reader.result);
     hash.toString();
}

reader.readAsBinaryString(document.getElementById("firmware_firmware").files[0]);
于 2013-11-28T11:15:29.720 に答える