我在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和我的服务器无法解密它。服务器有密钥。
答案 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。