Estoy tratando de realizar una suma de verificación en un archivo con javascript. Estoy usando un FileReader y uso CryptoJS con el método .MD5, así como la codificación CryptoJS.enc.Hex.
Las sumas de verificación difieren del front-end (arriba) y del back-end, donde lo obtengo de ExpressFIleUpload y también genero el mío propio con el módulo criptográfico a través de crypto.createHash('md5') y obtengo un resumen a través de hash.digest( 'maleficio'); y de esos dos, (el mío y ExpressFileUpload) también difieren...
Que esta pasando..?
let img = document.createElement('img'); img.file = data; let reader = new FileReader(); reader.onload = (function (someelement) { return function (e) { let md5 = CryptoJS.MD5(e.target.result); let str = md5.toString(CryptoJS.enc.Hex); console.log('str', str); // will give one random md5 }; })(img); reader.readAsBinaryString(data);luego en el servidor usando https://www.npmjs.com/package/express-fileupload
export async function(req, res, next) { console.log(req.files.file.md5) // some other md5 const hash = crypto.createHash('md5'); let buff = Buffer.from(req.files.file.data, "base64").toString('utf-8'); // edit, this actually DOES come to the same if I remove // .toString('utf-8') // as the req.files.file.md5 hash.update(buff); let str = hash.digest("hex"); console.log('other hash', str); // and some third completely different md5 }¿alguien puede por favor explicar lo que estoy haciendo mal?
¿Codificó e.target.result en UTF-8 en su front-end? Tuve algo así como el mismo problema, pero luego me di cuenta de que había usado la codificación incorrecta.
Intente codificar su cadena simple en utf-8 y después de eso.