我试图在IOS中加密一个字符串,然后将其发送到TCP服务器。代码的Python版本和iOS版本如下所示。请参阅两个版本的输出。它们看起来很相似,但长度不同,我不知道原因。有人能查一下吗,原因是什么?在
请注意,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
输出:
加密字符串:57aaywf4jkyx7kzgkwudibzusn1luc04c5yf3xei8=
解密字符串:密码12345678
^{pr2}$
输出:
AES数据:密码12345678
57AayWF4jKYx7KzGkwudIKNlwA+herrmiyz0szzds=