节点(加密)和节点之间的加密结果不同。斯威夫特(CocoaSecurity)

时间:2017-09-20 02:27:05

标签: node.js swift encryption cryptography cryptojs

我读过无数"加密结果在X& Y'#34;但遗憾的是无法找到解决方案。

我正在尝试使用CocoaSecurity在Swift中基于一些以前编写的加密代码复制Node中字符串的AES加密。

我有两个都返回base64值,但不幸的是它们不一样。

仅供参考我添加了一个"测试"以key,iv和string为例,这些不是我在项目中使用的值。

let key = Data.init(base64Encoded: "DqviM6rMaYF3kHymVTiis7MH7agLcFqmDoX085K7AWs=")
let iv = Data.init(base64Encoded: "zur4lDpQk4tFaqnEUYKD9A==")
let aes256 = CocoaSecurity.aesEncrypt("Testing1!", key: key, iv: iv)
let result = aes256?.base64
// result = nmvqDhE43gRQ1B0EWCu7vg==

在Node中,我已经编写了加密(使用相同的密钥& iv ...我已经三次检查),如下所示:

const key = Buffer.from('DqviM6rMaYF3kHymVTiis7MH7agLcFqmDoX085K7AWs=', 'base64');
const vector = Buffer.from('zur4lDpQk4tFaqnEUYKD9A==', 'base64');

const encryptTool = crypto.createCipheriv('aes256', key, vector);
const result = encryptTool.update("Testing1!", 'utf8', 'base64') + encryptTool.final('base64');
// results = FabfCtSAAuiZ9K93wcHXYA==

我知道加密实现之间的填充偶尔会有差异,但我尝试在上面添加encryptTool.setAutoPadding(false);并且它不会运行。

是否可以在此节点部分设置任何其他选项以确保返回相同的base64字符串?

在上面编辑,包括键/矢量,输入字符串和结果

0 个答案:

没有答案