Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java aes加密-内容大小不是16字节的倍数_Java_Ios_Iphone_Aes - Fatal编程技术网

Java aes加密-内容大小不是16字节的倍数

Java aes加密-内容大小不是16字节的倍数,java,ios,iphone,aes,Java,Ios,Iphone,Aes,我有一个接近735字节的数据,当我加密并发送到服务器时,服务器可以加密到720字节(16的倍数),但不能超过720字节,如何解决这个问题,我需要的是一种解决方案,可以解决这个问题 NSMutableData *cipherData = [NSMutableData dataWithLength: content.length + kCCBlockSizeAES128]; CCCryptorStatus result = CCCrypt(((shouldEncrypt)?kCCEn

我有一个接近735字节的数据,当我加密并发送到服务器时,服务器可以加密到720字节(16的倍数),但不能超过720字节,如何解决这个问题,我需要的是一种解决方案,可以解决这个问题

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
在选项中,(二进制)或将
kCCOptionPKCS7Padding
标志添加到
kCCOptionECBMode
标志


这将自动将最后一个块填充到块大小。请注意,如果存在整数个块(否则无法将数据与填充区区分开来),这也会添加一个完整的块。

您不能在末尾添加一些填充区以转到下一个16的倍数吗?@FlorentBayle自行填充并不难,可能不会导致漏洞,但使用平台定义的填充可能更好。thndrkiss注意:ECB模式不安全。也没有发送没有附加HMAC身份验证标记的密文。尽可能使用TLS。仅仅使用AES并不能保证协议的安全。