2013-07-23 23 views
5

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)のようなものを期待していました...

答えて

10

あなたが提供した情報から、私はあなたが物事をセットアップする方法を正確にはわかりませんが、ArrayBuffersをサポートするためにはcomponents/lib-typedarrays-min.jsを含める必要があります。

https://code.google.com/p/crypto-js/issues/detail?id=67にこれに関する議論があります。

希望すると便利です。

+0

ボタンを右クリックします。ありがとう。 –

+0

問題はありません。 – Trey

+0

私はsha256を使いたいと思っていますが、私は困っています。私の場合は、画像を表すb64文字列があります。私はリンクしたコードをarraybufferに変換して使用し、次にワード配列を使ってハッシュを計算します。残念ながら私のMac上でopenssl sha256で画像のハッシュをチェックすると、結果は異なります。私が間違っていることのアイデア? – Dieghito

関連する問題