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) ...
Ngay trên nút. Cảm ơn. –
Không có vấn đề gì vui lòng giúp bạn! – Trey
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