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) ...
Bezpośrednio na przycisku. Dzięki. –
Nie ma problemu z przyjemnością pomocy! – Trey
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