关于nodejs中 废弃的加密方法crypto.createCipher('aes256', key) 使用golang实现
一个N年前的nodejs项目,其中一块对密码加密的代码使用的方法是废弃掉的,缺少盐值和加密模式,现在正在使用golang进行重构,不知道该怎么使用go实现下方的加密代码
// 此处是nodejs加密
createToken(src, timestamp, key) {
const msg = src + '|' + timestamp;
const cipher = crypto.createCipher('aes256', key);
let enc = cipher.update(msg, 'utf8', 'hex');
enc += cipher.final('hex');
return enc;
}
// 此处是nodejs解密
parseToken(token, key) {
const decipher = crypto.createDecipher('aes256', key);
let dec;
try {
dec = decipher.update(token, 'hex', 'utf8');
dec += decipher.final('utf8');
} catch (err) {
// console.error('[token] fail to decrypt token. %j', token);
return null;
}
const ts = dec.split('|');
if (ts.length !== 2) {
// illegal token
return null;
}
return {src: ts[0], timestamp: Number(ts[1])};
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
用 crypto/aes。
注意在
NewCipher
传 32 字节的密钥来选择aes256
就行了。不太清楚 nodejs 默认的 aes256 是 CBC 还是 ECB 还是啥模式,你可以自己百度谷歌搜索下,不然就试一试。