CryptoJS v3.1.2、sha1.jsロールアップCryptoJSを使用してBLOBの正しいSHA1ハッシュを取得するには?
JSでは、BLOBのSHA1をサーバーに送信する前に計算します。サーバー上で、結果ファイルのSHA1を計算し、それをJSから受け取ったSHA1と比較したいと思います。
function uploadFileslice (slice) { // slice is a blob
var fileReader = new FileReader()
fileReader.onload = function(event){
var arrayBuffer = event.target.result
var wordArray = CryptoJS.lib.WordArray.create(arrayBuffer)
var sha1crc = CryptoJS.SHA1(wordArray).toString(CryptoJS.enc.Hex)
//etc
requestParams.append('fileslice', slice)
requestParams.append('sha1crc', sha1crc)
//etc
}
fileReader.readAsArrayBuffer(slice)
}
PHPコード:
$file_crc = sha1_file($_FILES['fileslice']['tmp_name']);
if ($_REQUEST['sha1crc'] !== $file_crc) {
echo "Invalid CRC: {$_REQUEST['sha1crc']} (expected $file_crc)";
return;
}
出力:
無効な問題がCryptoJS.SHA1()によって生成されたハッシュは(常に9844f81e1408f6ecb932137d33bed7cfdcf518a3)
JSコード間違っているということですCRC:9844f81e1408f6ecb932137d33bed7cfdcf518a3(予想3ebe2cd2d8fd8d8f977b6d715f0b1adf5b08b407
私はmyHash = CryptoJS.SHA1(BLOB)のようなものを期待していました...
ボタンを右クリックします。ありがとう。 –
問題はありません。 – Trey
私はsha256を使いたいと思っていますが、私は困っています。私の場合は、画像を表すb64文字列があります。私はリンクしたコードをarraybufferに変換して使用し、次にワード配列を使ってハッシュを計算します。残念ながら私のMac上でopenssl sha256で画像のハッシュをチェックすると、結果は異なります。私が間違っていることのアイデア? – Dieghito