首页 > 解决方案 > 如何在 EvaporateJS 的 cryptoMd5Method 中使用 nodejs 加密

问题描述

我在使用 webpack 的反应项目中使用 EvaporateJS。

文档中所述,我使用了以下内容:

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

cryptoMd5Method: function (data) { 
 return crypto.createHash('md5').update(data).digest('base64'); 
}

但“数据”是 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?这将帮助我保持较小的捆绑包。

标签: javascriptnode.jswebpackaws-sdkevaporate.js

解决方案


1)导入浏览器兼容包:

import MD5 from 'js-md5'; import { sha256 as SHA256 } from 'js-sha256';

2) 声明函数:

const md5 = (x) => { const o = MD5.create(); o.update(x); return o.base64(); }; const sha256 = (x) => { const o = SHA256.create(); o.update(x); return o.hex(); };

3)配置中的用法:

... computeContentMd5: true, cryptoMd5Method: (_) => md5(_), cryptoHexEncodedHash256: (_) => sha256(_), ...


推荐阅读