2013-07-23 28 views
5

CryptoJS v3.1.2, sha1.js rollupLàm thế nào để có được hàm băm SHA1 chính xác của BLOB khi sử dụng CryptoJS?

Trong JS tôi muốn tính toán SHA1 của một đốm màu trước khi gửi nó đến máy chủ. Trên máy chủ tôi muốn tính toán SHA1 của tập tin kết quả và so sánh nó với SHA1 nhận được từ JS. Vấn đề là các hash được tạo ra bởi CryptoJS.SHA1() là không chính xác (luôn 9844f81e1408f6ecb932137d33bed7cfdcf518a3)

Mã JS: Mã

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

Output:

không hợp lệ CRC: 9844f81e1408f6ecb932137d33bed7cfdcf518a3 (dự kiến ​​3ebe2cd2d8fd8d8f977b6d715f0b1adf5b08b407

Tôi đã hy vọng cho một cái gì đó như myHash = CryptoJS.SHA1 (blob) ...

Trả lời

10

Từ thông tin bạn đã cung cấp, tôi không chắc chắn chính xác cách bạn thiết lập mọi thứ nhưng để ArrayBuffers được hỗ trợ bạn phải bao gồm các thành phần/lib-typedarrays-min.js.

Có cuộc thảo luận về điều này tại https://code.google.com/p/crypto-js/issues/detail?id=67.

Hy vọng điều này sẽ hữu ích!

+0

Ngay trên nút. Cảm ơn. –

+0

Không có vấn đề gì vui lòng giúp bạn! – Trey

+0

Tôi đang tìm cách sử dụng sha256 và tôi đang gặp khó khăn .. Trong trường hợp của tôi, tôi có một chuỗi b64 đại diện cho một hình ảnh. Tôi sử dụng mã mà bạn đã liên kết bằng cách chuyển đổi thành mảng, và sau đó sử dụng một bảng mã để tính toán băm. Thật không may khi tôi kiểm tra hash của hình ảnh với openssl sha256 trên mac của tôi, kết quả là khác nhau. Bất kỳ ý tưởng về những gì tôi đang làm sai? – Dieghito

Các vấn đề liên quan