javascript - 如何在 javascript 中使用 node-js 加密?
问题描述
我需要以下加密解密,但在客户端的 java 脚本中。此代码是用 Node-JS 编写的并使用加密库,我找不到用于客户端运行的 java 脚本的相同解决方案。
const crypto = require('crypto');
const decrypt = (textBase64, keyBase64, ivBase64) => {
const algorithm = 'aes-256-cbc';
const ivBuffer = Buffer.from(ivBase64, 'base64');
const keyBuffer = Buffer.from(keyBase64, 'base64');
const decipher = crypto.createDecipheriv(algorithm, keyBuffer, ivBuffer);
decipher.setAutoPadding(false);
let decrypted = decipher.update(textBase64, 'base64', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
const encryptedMessage = '';
const key = 'cGFzc3dvcmQxMjM0NTY3ODk=';
const iv = Buffer.from(encryptedMessage, 'base64').slice(0, 16);
// the message comes from the bytes AFTER the IV - this is what you should decrypt
const message = Buffer.from(encryptedMessage, 'base64').slice(16);
const result = decrypt(message, key, iv);
console.log(result);
//console.log(Buffer.from(encryptedMessage, 'base64').slice(0, 16))
解决方案
首先我会说不建议在客户端解密,因为密钥是可见的。但你知道你在做什么。
这个库是纯 JS,应该可以在浏览器中正常工作:ricmoo/aes-js
推荐阅读
- vue.js - 当 Vue.js 路由器路径为 /apple-app-site-association 时如何打开文件
- python - 使用 python 和正则表达式从 reddit 评论中删除链接
- android - 如何编辑 gradle 以使用 Recyclerview
- python - 将多边形(在图像中)转换为蒙版
- r - 根据R中2个栅格之间的土地覆盖类型计算R2值?
- python - 无法在 Windows 10 中构建 V8
- r - 如何用第三个变量标记 ggplot2 boxplot 异常值?
- vba - 对在幻灯片中生成图形所需的 VBA 代码进行逆向工程
- matlab - 具有“rand”函数的函数系列(Matlab)
- c# - 在扩展类中获取用户管理器