python使用AES加解密

需要安装库:

pip install crypto

pip install pycrypto

 

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


class AESCrypto:
    def __init__(self, key, ivec):
        self.key = key
        self.mode = AES.MODE_CBC
        self.ivec = ivec
        self.encrypt_text = ""
        self.decrypt_text = ""
        self.block_size = AES.block_size

    def pad(self, text):
        pad_len = self.block_size - len(text) % self.block_size
        return text + pad_len * chr(pad_len)

    def unpad(self, text):
        pad_len = ord(text[len(text) - 1])
        return text[:-pad_len]

    def encrypt(self, text):
        block_size = AES.block_size
        length = len(text)
        if length % block_size != 0:
            padding = block_size - (length % block_size)
            text = text + chr(0) * padding
        cryptor = AES.new(self.key, self.mode, self.ivec)
        self.encrypt_text = cryptor.encrypt(text)
        return b2a_hex(self.encrypt_text)

    def decrypt(self, text):
        cryptor = AES.new(self.key, self.mode, self.ivec)
        self.decrypt_text = cryptor.decrypt(a2b_hex(text))
        return self.decrypt_text.rstrip("\0")

if __name__ == "__main__":
    key = "q*yu37@tn#6~KnC!"
    ivec = chr(0)*16
    aes_crypto = AESCrypto(key, ivec)
    text = "hello JavaWeb学习总结"
    text = aes_crypto.pad(text)
    encrypt_text = aes_crypto.encrypt(text)
    print encrypt_text
    decrypt_text = aes_crypto.decrypt(encrypt_text)
    decrypt_text = aes_crypto.unpad(decrypt_text)
    print decrypt_text

运行结果:

4823c258e984f54c384804d898ce6b254f69b31532215cc4f9bd13c87d3aacf4
hello JavaWeb学习总结

Process finished with exit code 0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值