javascript - 如何在 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
?这将帮助我保持较小的捆绑包。
解决方案
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(_),
...
推荐阅读
- c# - 如何防止用户通过搜索栏访问路线?
- vue.js - v-model 将字符串与 var 连接起来?
- java - 更改的应用名称现在无法识别我的 AndroidManifest 文件
- c# - 调试asp.net mvc框架源码时出现“No symbol has been loaded for this document”
- swift - 在Swift中将String拆分为长度为1的字符串数组
- python - Lief 不会安装 | 无法为信仰造轮子
- javascript - 如何使用javascript和html一键向firebase数据库中的所有子项添加新数据
- proxy - 在 AWS 上使用代理文件构建 Angular-Cli
- c# - AJAX 部分回发面板破坏了我的按钮?
- linux - 如何让openssl验证下载文件的MAC?