请教 Node AES 加密 CBC 模式 ,自动填充PKCS5Padding 和PKCS7Padding 如何设置
发布于 8 年前 作者 Relax1989 11103 次浏览 来自 问答

使用的是CBC模式 现在遇到问题,C#的加密与Node的加密对不上 查了C#的代码,发现是用的PKCS7Padding 填充 初学Node,请教一下Node中的填充如何修改填充模式

代码如下 var _outputEncoding = ‘binary’, _inputEncoding = ‘utf8’, _encoding = ‘base64’, _module = ‘aes-256-cbc’;

exports.encrypt = function (data, key, iv) { var cipher = crypto.createCipheriv(_module, key, iv); cipher.setAutoPadding(true);//自动填充 var crypted = cipher.update(data, _inputEncoding, _outputEncoding); crypted += cipher.final(_outputEncoding); crypted = new Buffer(crypted, _outputEncoding).toString(_encoding); return crypted; }; exports.decrypt = function (crypted, key, iv) { crypted = new Buffer(crypted, _encoding).toString(_outputEncoding); var decipher = crypto.createDecipheriv(_module, key, iv); var decoded = decipher.update(crypted, _outputEncoding, _inputEncoding); decoded += decipher.final(_inputEncoding); return decoded; }; 代码 End

3 回复

有谁做过这块,帮忙帮忙看看呗

自己顶上去

javascript 默认就是使用PKCS7Padding填充的。密码对不上,多半是倒在key和iv的坑上了。有一个库https://github.com/brix/crypto-js你可以参考一下,区别在于:

let key = Crypto.enc.Hex.parse('your key')
let iv = Crypto.enc.Hex.parse('your iv')
回到顶部