Шифрование AES в Python отличается от iOS

Я пытаюсь зашифровать строку в IOS, а затем отправить ее на TCP-сервер. Python версия кода и iOS версии показаны ниже. Пожалуйста, посмотрите выходные данные обеих версий. Они выглядят довольно похоже, но длина отличается, и я не знаю причину. Может ли кто-нибудь проверить, в чем может быть причина?

Пожалуйста, обратите внимание, что PADDING в скрипте Python следует отбросить, так как я уже указал длину текста 16.

Код PYTHON:

     #!/usr/bin/env python

     from Crypto.Cipher import AES
     import base64
     import os

     # the block size for the cipher object; must be 16, 24, or 32 for AES
     BLOCK_SIZE = 16

     PADDING = '{'

     # one-liner to sufficiently pad the text to be encrypted
     pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING

     # one-liners to encrypt/encode and decrypt/decode a string
     # encrypt with AES, encode with base64
     EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
     DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)


     secret = "1234567890123456" 

     # create a cipher object using the random secret
     cipher = AES.new(secret)

     encoded = EncodeAES(cipher, 'password12345678')
     print 'Encrypted string:', encoded

     decoded = DecodeAES(cipher, encoded)
     print 'Decrypted string:', decoded

OUTPUT:

Зашифрованная строка: 57AayWF4jKYx7KzGkwudIBZUsn1ULOC0C4c5YF3xeI8=

Расшифрованная строка: password12345678

NSString *forKey=@"1234567890123456";
NSString *mystr =@"password12345678";
const char *utfString = [mystr UTF8String];
NSData *aData=[NSData dataWithBytes: utfString length: strlen(utfString)];
aData=[mystr dataUsingEncoding:NSUTF8StringEncoding];
NSData *data;//=[aData AES128EncryptWithKey:forKey];
data=[aData AES128EncryptWithKey:forKey];

NSString *base64 = [data base64EncodedString];

aData=[data AES128DecryptWithKey:forKey];
mystr=[[NSString alloc] initWithData:aData encoding:NSUTF8StringEncoding];

NSLog(@"AES data : %@  \n %@",mystr,base64 );

OUTPUT:

Данные AES : password12345678
57AayWF4jKYx7KzGkwudIKNlwA+HErrmiy1Z0szzZds=

5
задан Bora 23 January 2012 в 08:16
поделиться