1

python(2.6)中加密方法的代码:

key += PADDING * (32 - len(key))
pad_it = lambda s: s+(16 - len(s)%16)*PADDING
crypt = AES.new(key, AES.MODE_CBC, 'J2-+sfd%932mIt:{')
data = crypt.encrypt(pad_it(data))

objc(iOS6)中解密方法的代码:

CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
                                      kCCAlgorithmAES128,
                                      kCCOptionPKCS7Padding,
                                      keyPtr, kCCKeySizeAES256,
                                      NULL /* initialization vector (optional) */,
                                      [self bytes], dataLength, /* input */
                                      buffer, bufferSize, /* output */
                                      &numBytesDecrypted );

我用python加密了一个plist文件,然后用objc解密,但是在objc(iOS6)中调试时,解密的数据在文件内容的末尾丢失了一些字符。

有没有人也遇到过这个问题,有人可以帮助我吗?谢谢。

4

1 回答 1

1

kCCOptionPKCS7Padding 设置不正确,因此 iOS6 正在删除最后一个 16 字节块。iOS5,当padding设置不正确时,会被当作未指定。

于 2012-09-25T08:51:02.887 回答