Javascript 如何在JS的CryptoMD5方法中使用nodejs crypto

Javascript 如何在JS的CryptoMD5方法中使用nodejs crypto,javascript,node.js,webpack,aws-sdk,evaporate.js,Javascript,Node.js,Webpack,Aws Sdk,Evaporate.js,我正在react项目中使用ExpresseJS,该项目使用webpack 如中所述,我使用了以下方法: 我不想使用aws sdk,因为包的大小是可以正常工作的 但“数据”是ArrayBuffer的类型。所以我试着把它转换成字符串 cryptoMd5Method: function (data) { var enc = new TextDecoder(); var dataString = enc.decode(data); var computed = crypto.c

我正在react项目中使用ExpresseJS,该项目使用webpack

如中所述,我使用了以下方法:

我不想使用aws sdk,因为包的大小是可以正常工作的

但“数据”是ArrayBuffer的类型。所以我试着把它转换成字符串

cryptoMd5Method: function (data) { 
    var enc = new TextDecoder();
    var dataString = enc.decode(data);
    var computed = crypto.createHash('md5').update(dataString).digest('base64');
    return computed ;
}
但这并不能正确计算摘要

那么,考虑到nodejs加密选项,这个问题的解决方案应该是什么呢


另外,如何只导入AWS.util.crypto模块而不引用整个AWS sdk?这将帮助我保持捆绑包的小型化。

整个aws sdk确实很大,但是对于前端浏览器,您可以构建一个较小的工件,只包含您需要的内容。 按照前面的说明操作


有关将ArrayBuffer转换为字符串以将其传递给哈希算法的更新方法的信息,请参见:。

1导入与浏览器兼容的软件包:

从“js-MD5”导入MD5; 从“js-sha256”导入{sha256 as sha256};

2.声明函数:

const md5=x=>{const o=md5.create;o.updatex;返回o.base64;}; constsha256=x=>{consto=sha256.create;o.updatex;返回o.hex;};

3配置中的用法:

。。。 computeContentMd5:对, CryptoMD5方法:=>md5, cryptoHexEncodedHash256:=>sha256, ...

您可以只使用所需内容构建aws sdk,而无需其他内容。遵循以下步骤:但问题是“数据”是ArrayBuffer-到底是什么问题?@IvanRubinson param data是int类型的ArrayBuffer。crypto.createHash'md5'。更新-->需要一个字符串参数。它成功了!虽然我希望得到一个解决方案围绕'加密',但这两个库是比'aws'sdk的大小小得多。
cryptoMd5Method: function (data) { 
    var enc = new TextDecoder();
    var dataString = enc.decode(data);
    var computed = crypto.createHash('md5').update(dataString).digest('base64');
    return computed ;
}