2013-07-23 15 views
5

CryptoJS v3.1.2, sha1.js rollupJak uzyskać poprawny skrót SHA1 BLOB przy użyciu CryptoJS?

W JS chcę obliczyć SHA1 obiektu typu blob przed wysłaniem go na serwer. Na serwerze chcę obliczyć SHA1 wynikowego pliku i porównać go z SHA1 otrzymanym z JS. Problemem jest to, że hash generowane przez CryptoJS.SHA1() jest nieprawidłowy (zawsze 9844f81e1408f6ecb932137d33bed7cfdcf518a3)

kod JS: Kod

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

wyjściowa:

Nieprawidłowy CRC: 9844f81e1408f6ecb932137d33bed7cfdcf518a3 (oczekiwano 3ebe2cd2d8fd8d8f977b6d715f0b1adf5b08b407

Miałem nadzieję na coś takiego, jak myHash = CryptoJS.SHA1 (blob) ...

Odpowiedz

10

Z podanych informacji nie wiem dokładnie, jak skonfigurować ustawienia, ale aby ArrayBuffers mógł być obsługiwany musisz dołączyć komponenty/lib-typedarrays-min.js.

Dyskusja na ten temat odbywa się pod numerem https://code.google.com/p/crypto-js/issues/detail?id=67.

Mam nadzieję, że to pomoże!

+0

Bezpośrednio na przycisku. Dzięki. –

+0

Nie ma problemu z przyjemnością pomocy! – Trey

+0

Szukam użyć sha256 i mam problemy .. W moim przypadku, mam ciąg b64 reprezentujący obraz. Używam kodu, który połączyłeś, przekształcając go w arraybuffer, a następnie używając wordarraya do obliczenia skrótu. Niestety, gdy sprawdzam hash obrazu z openssl sha256 na moim mac, wyniki są różne. Masz pojęcie, co robię źle? – Dieghito

Powiązane problemy