【发布时间】:2014-03-08 04:49:39
【问题描述】:
我有一个接近 735 字节的数据,当我加密并将其发送到服务器时,服务器能够加密到 720(16 的倍数),但除此之外没有任何其他内容,如何解决这个问题,我需要是一种可以解决这个问题的解决方案。
NSMutableData *cipherData = [NSMutableData dataWithLength: content.length + kCCBlockSizeAES128];
CCCryptorStatus
result = CCCrypt(((shouldEncrypt)?kCCEncrypt:kCCDecrypt), // operation
kCCAlgorithmAES128, // Algorithm - AES128 means the block size, not the keysize
kCCOptionECBMode, // options
key.bytes, // key
kCCKeySizeAES256, // keylength
NULL,// iv
content.bytes, // dataIn
content.length, // dataInLength,
cipherData.mutableBytes, // dataOut
cipherData.length, // dataOutAvailable
&outLength); // dataOutMoved
【问题讨论】:
-
你不能在最后添加一些填充以转到下一个 16 的倍数吗?
-
@FlorentBayle 自己做填充并不难,而且可能不会导致漏洞,但使用平台定义的填充可能会更好。 thndrkiss 注意:ECB 模式不安全。也不会发送没有附加 HMAC 身份验证标签的密文。尽可能使用 TLS。仅使用 AES 并不能使您的协议安全。