【Python基础】1、python+ AES对称加密算法使用详解,附demo

如果想要更简单的使用,可以将此脚本打包为exe文件,直接打包执行即可。

# coding:utf8
import time
from Crypto import Random
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex

print'\n'.join([''.join([('PYTHON!'[(x-y)%7]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)])


while True:
    print u'*********************** 加密、解密一次只能执行一个,另一个回车跳过即可******************'
    # 要加密的明文
    print u'要加密的明文: '
    input_data = raw_input()

    # 要解密的密文
    print u'要解密的密文: '
    crypto_data = raw_input()

    # 密钥key
    # 长度必须为16(AES-128)、24(AES-192)、或32(AES-256)Bytes 长度.目前AES-128足够用
    key = b'human_drink@keys'

    if input_data:
        # 生成长度等于AES块大小的不可重复的密钥向量
        iv = Random.new().read(AES.block_size)

        # 使用key和iv初始化AES对象, 使用MODE_CFB模式
        my_cipher = AES.new(key, AES.MODE_CFB, iv)

        # 加密的明文长度必须为16的倍数,如果长度不为16的倍数,则需要补足为16的倍数
        # 将iv(密钥向量)加到加密的密文开头,一起传输
        cipher_text = iv + my_cipher.encrypt(input_data.encode())
        print u'加密后数据为:', b2a_hex(cipher_text)

    if crypto_data and not input_data:
        # 解密的话要用key和iv生成新的AES对象
        my_decrypt = AES.new(key, AES.MODE_CFB, a2b_hex(crypto_data)[:16])
        # 使用新生成的AES对象,将加密的密文解密
        decrypt_text = my_decrypt.decrypt(a2b_hex(crypto_data)[16:])
        print u'解密后数据为:', decrypt_text.decode()

    print u''
    print u''

你可能感兴趣的:(python,加密解密,python,AES加密解密说明)