python AES-16位加密解密功能实现

从网上搜了很多这种python AES相关内容,但是大部分都是需要自己调试修改半天才能使用,有的甚至埋下很多坑,费时费力,我这边根据项目需求,也需要弄一套AES-16位加密和解密API


我用的python加密组件是Crypto,很好用,可以从网上下载最新的库,我用的比较稳定的版本2.6,可以从https://pypi.python.org/pypi/pycrypto下载;


通过./configure,python setup.py build ,python setup.py install 三步法完成编译安装,一定要从官方下载,我当时一开始某一个网站下载一个,经过三步法虽然安装完成了,但是调试发现aes无法使用一直coredown,最后就直接删除掉,从官方下载一个。


经过调试通过的AES接口如下:


from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
 
class crypt():
    def __init__(self):
        self.key = '1234567890123456'
        self.iv  = 'This is an IV456'
        self.mode = AES.MODE_CBC
        self.BS = AES.block_size
        self.pad = lambda s: s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS)
        self.unpad = lambda s : s[0:-ord(s[-1])]

    def encrypt(self, text):
        text = self.pad(text)
        self.obj1 = AES.new(self.key, self.mode, self.iv)
        self.ciphertext = self.obj1.encrypt(text)
        return b2a_hex(self.ciphertext)
    
    def decrypt(self, text):
        self.obj2 = AES.new(self.key, self.mode, self.iv)
        plain_text  = self.obj2.decrypt(a2b_hex(text))
        return self.unpad(plain_text.rstrip('\0'))

if __name__ == '__main__':
    pc = crypt()
    e = pc.encrypt("hello")
    print e
    d = pc.decrypt(e)
    print d


该接口类主要做了加密解密中补位的操作,满足16位加密和解密要求。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值