2012-09-20 44 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