Python 2.7加密AES

时间:2014-11-12 15:33:44

标签: python encryption aes

我在python 2.7中遇到了问题

import pyelliptic
iv = pyelliptic.Cipher.gen_IV('aes-256-cfb')
ctx = pyelliptic.Cipher("secretkey", iv, 1, ciphername='aes-256-cfb')

ciphertext = ctx.update('test1')
ciphertext += ctx.final()

ctx2 = pyelliptic.Cipher("secretkey", iv, 0, ciphername='aes-256-cfb')

现在我不知道如何将这个msg发送到服务器,并在服务器上解密,因为我不知道IV和我的服务器无法解密它。服务器有密钥。

1 个答案:

答案 0 :(得分:4)

IV不需要保密,但对于每个使用相同密钥的加密操作,它都需要唯一(随机)。

许多实现只是将IV字节添加到密文的前面。您必须知道IV对于您的实现需要多长时间,以便您可以在解密之前对其进行切片。

# encrypt
ciphertext = iv + ciphertext

# decrypt
blocksize = pyelliptic.Cipher.get_blocksize('aes-256-cfb')
iv = ciphertext[0:blocksize]
ciphertext = ciphertext[blocksize:]

code可以看出,IV的生成大小与密码块大小相同,因此可以安全地从密文中切出一个块来获取IV。