2012-09-20 30 views
1

加密方法的在Python代码(2.6):错过某些字符时AES 256解密在objc

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)中调试时,解密后的数据会在文件内容末尾丢失一些字符。

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

+1

文件中是否有任何''\ 0''? – Marcus

回答

1

kCCOptionPKCS7Padding设置不正确,因此iOS6将丢弃最后一个16字节块。 iOS5,当填充设置不正确时,它会将其视为未指定。

+0

也许你可以看看http://stackoverflow.com/questions/12596280/cccrypt-difference-between-ios5-and-ios6? – NDY