我在使用节点加密数据和使用 RNCryptor 解密时遇到问题。我的理解是 RNCryptor 使用特殊的数据格式?
生成的密文如下:
var crypto = require('crypto');
var cipher = crypto.createCipher('aes-256-cbc','InmbuvP6Z8');
var text = "123|123123123123123";
var crypted = cipher.update(text,'utf8','base64');
crypted += cipher.final('base64');
我是这样解密的:
[RNDecryptor decryptData:plainText withPassword:password error:&error];
我该怎么做?当我当前尝试解密时,我得到一个空的 NSData 并且没有错误。
最佳答案
是的,RNCryptor 以其自己的格式输出加密数据。如果您在自己的加密代码中构建此格式(并使用相同的加密参数),则可以将其传递给 JNCryptor 进行解密。
对于 RNCryptor 格式版本 3,前 34 个字节如下:
然后是加密的密文。
然后最后 32 个字节保存密文的 (SHA256) HMAC。
规范在这里:https://github.com/RNCryptor/RNCryptor-Spec/blob/master/RNCryptor-Spec-v3.md
关于commoncrypto - 如何在 node.js 中加密并使用 RNCryptor 解密,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25656501/