我使用带有 pkc7
填充的 AES256
算法 CBC 模式
。我在 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)
}
没有padding怎么办?或者后端应该做什么?
最佳答案
您可以在要共享的负载之前和之后使用标签。该标签将是您的标题。
像 <tag>string</tag>
因此,如果您加密,您将获得前 12 个随机字节
所以你需要忽略 **<tag>...</tag>**
之间的文本。
关于node.js - 使用 swift 5 的 AES256 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56882372/