1

Python(2.6)のencryptメソッドのコード:

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 );

plist ファイルを python で暗号化してから objc で復号化しましたが、objc (iOS6) でデバッグすると、復号化されたデータのファイルの内容の末尾にいくつかの文字がありませんでした。

誰かがこの問題にも遭遇しましたか?誰かが私を助けることができますか? ありがとう。

4

1 に答える 1

1

kCCOptionPKCS7Padding が正しく設定されていないため、iOS6 は最後の 16 バイト ブロックを削除しています。iOS5では、パディングが正しく設定されていない場合、指定されていないものとして扱われていました。

于 2012-09-25T08:51:02.887 に答える