2013-07-23 15 views
5

CryptoJS v3.1.2, cumulativo sha1.jsCome ottenere l'hash SHA1 di BLOB corretto usando CryptoJS?

In JS voglio calcolare lo SHA1 di un blob prima di inviarlo al server. Sul server voglio calcolare lo SHA1 del file risultante e confrontarlo con lo SHA1 ricevuto da JS. Il problema è che l'hash generato da CryptoJS.SHA1() non è corretta (sempre 9844f81e1408f6ecb932137d33bed7cfdcf518a3)

codice JS: codice

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; 
} 

uscita:

non valido CRC: 9844f81e1408f6ecb932137d33bed7cfdcf518a3 (previsto 3ebe2cd2d8fd8d8f977b6d715f0b1adf5b08b407

Speravo in qualcosa come myHash = CryptoJS.SHA1 (blob) ...

risposta

10

Dalle informazioni che hai fornito non sono sicuro di come hai configurato le cose ma in modo che ArrayBuffer sia supportato devi includere componenti/lib-typedarrays-min.js.

C'è una discussione al riguardo a https://code.google.com/p/crypto-js/issues/detail?id=67.

Spero che questo aiuti!

+0

Proprio sul pulsante. Grazie. –

+0

Nessun problema lieto di aiutarti! – Trey

+0

Sto cercando di usare sha256 e ho delle difficoltà. Nel mio caso, ho una stringa b64 che rappresenta un'immagine. Uso il codice che hai collegato convertendolo in arraybuffer e quindi utilizzando un wordarray per calcolare l'hash. Sfortunatamente quando controllo l'hash dell'immagine con openssl sha256 sul mio mac, i risultati sono diversi. Qualche idea su cosa sto facendo male? – Dieghito