【发布时间】:2019-07-04 07:07:58
【问题描述】:
我正在使用AES256 算法CBC mode 和pkc7 填充。我在Node.js 有后端。但是获得前 12 个随机字符。
这是我的快速代码:
func encrypt(data: Data, key: Data, iv: Data) throws -> Data? {
// Output buffer (with padding)
let outputLength = data.count + kCCBlockSizeAES128
var outputBuffer = Array<UInt8>(repeating: 0,
count: outputLength)
//var outputBuffer: [UInt8] = []
var numBytesEncrypted = 0
let status = CCCrypt(CCOperation(kCCEncrypt),
CCAlgorithm(kCCAlgorithmAES),
CCOptions(kCCOptionPKCS7Padding),
Array(key),
kCCKeySizeAES256,
Array(iv),
Array(data),
data.count,
&outputBuffer,
outputLength,
&numBytesEncrypted)
guard status == kCCSuccess else { return nil }
let outputBytes = iv + outputBuffer.prefix(numBytesEncrypted)
return Data(bytes: outputBytes)
}
没有填充怎么办?或者应该从后端做什么?
【问题讨论】:
-
你是在快速加密还是解密? nodejs是怎么做加密的?
-
@JamesKPolk 我正在从 swift 加密并从 node.js 解密
-
这可能是你的编码。确保在 iOS 上使用相同的编码将文本转换为字节,就像将字节转换为文本一样。您与数据有一些相似之处的事实表明加密完成了它应该做的事情。如果加密失败,它就会爆炸。
标签: node.js swift encryption aes node-crypto