python实现AES算法

pycrypto库下载:http://pan.baidu.com/s/1nvNtCvB (python2.7的版本),直接安装就可以了

#!/usr/bin/python
#-*- coding:utf-8-*-
from    Crypto.Cipher   import AES
from    binascii    import b2a_hex,a2b_hex

class   aes():#自己实现了一个aes类,用于aes的加密和解密
    def __init__(self,key,mode):#key为aes秘钥,mode为加密模式
        self.key = key
        self.mode = mode

    def encrypt(self,text,count):#text的为要加密的文本或者二进制流,count为加密数据的长度
        cryptor = AES.new(self.key,self.mode,b'0000000000000000')
        length = 16
        if count < length:
            add = (length-count)
            #\0 backspace
            text = text + ('\0' * add)
        elif count > length:
            add = (length-(count % length))
            text = text + ('\0' * add)
        self.cipherText = cryptor.encrypt(text)
        return b2a_hex(self.cipherText)#将内存中的数据已16进制字符串打印出来
    def decrypt(self,cipherText):#cipherText类型为16进制字符串如:"fa0345da",一般为32个字节长度
        cryptor = AES.new(self.key,self.mode,b'0000000000000000')
        plainText = cryptor.decrypt(a2b_hex(cipherText))#将秘钥转换为二进制流
        return plainText#返回值为二进制流,因为有很多不可打印字符

def     main():

        key = '1234567890123456' #秘钥的长度必须为16
        cryptor = aes(key,AES.MODE_ECB)#这里选用的是ECB模式
        msg = 'helloworld' #加密字符串
        cipher = cryptor.encrypt(msg,len(msg)) #返回值是内存中的16进制字符串
        print cipher
        plainText = cryptor.decrypt(cipher)#解密函数,秘钥在aes初始化的时候设置好了,aes是对称加密的,加密的秘钥和解密的秘钥是一样的
        print plainText
if      __name__=="__main__":
        main()

python实现AES算法_第1张图片

你可能感兴趣的:(python)