2013-07-23 2 views
5

CryptoJS v3.1.2, sha1.js RollupWie bekomme ich den korrekten SHA1 Hash von BLOB mit CryptoJS?

In JS möchte ich die SHA1 eines Blobs vor dem Senden an den Server berechnen. Auf dem Server möchte ich die SHA1 der resultierenden Datei berechnen und sie mit der von JS empfangenen SHA1 vergleichen. Das Problem ist, dass der Hash erzeugt durch CryptoJS.SHA1() nicht korrekt ist (immer 9844f81e1408f6ecb932137d33bed7cfdcf518a3)

JS-Code:

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-Code:

$file_crc = sha1_file($_FILES['fileslice']['tmp_name']); 
if ($_REQUEST['sha1crc'] !== $file_crc) { 
    echo "Invalid CRC: {$_REQUEST['sha1crc']} (expected $file_crc)"; 
    return; 
} 

Ausgang:

ungültig CRC: 9844f81e1408f6ecb932137d33bed7cfdcf518a3 (erwartet 3ebe2cd2d8fd8d8f977b6d715f0b1adf5b08b407

ich etwas Hoffnung, wie myHash = CryptoJS.SHA1 (Klecks) ...

Antwort

10

Von der Info, dass Sie ich bin nicht sicher, genau zur Verfügung gestellt haben, wie Sie die Dinge Setup haben aber damit ArrayBuffers unterstützt werden Sie müssen die Komponenten/lib-typedarrays-min.js einschließen.

Es gibt eine Diskussion darüber unter .

Hoffe, das hilft!

+0

Direkt auf der Schaltfläche. Vielen Dank. –

+0

Kein Problem, froh zu helfen! – Trey

+0

Ich suche sha256 zu verwenden und ich habe Schwierigkeiten .. In meinem Fall habe ich eine B64-Zeichenfolge, die ein Bild darstellt. Ich benutze den Code, den du verlinkt hast, indem du in arraybuffer konvertierst, und dann einen wordarray verwendest, um den Hash zu berechnen. Leider, wenn ich den Bild-Hash mit openssl sha256 auf meinem Mac überprüfe, sind die Ergebnisse unterschiedlich. Irgendeine Idee von dem, was ich falsch mache? – Dieghito

Verwandte Themen