import hashlib
from Crypto.Cipher import AES
import base64
class prpcrypt():
def __init__(self,key):
self.key = key # 因为在python3中AES传入参数的参数类型存在问题,需要更换为 bytearray , 所以使用encode编码格式将其转为字节格式(linux系统可不用指定编码)
IV = 16 * '\x00'
self.iv=IV.encode("utf-8")
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).encode("utf-8")
cryptor = AES.new(self.key, self.mode, self.iv)
# 目前AES-128 足够目前使用(CBC加密)
ciphertext = cryptor.encrypt(text)
# base64加密
return base64.b64encode(bytes(ciphertext))
# 解密
def decrypt(self, text):
# base64解密
text = base64.b64decode(text)
cryptor = AES.new(self.key, self.mode, self.iv)
# CBC解密
plain_text = cryptor.decrypt(text)
# 去掉补足的空格用strip() 去掉
return self.unpad(bytes.decode(plain_text).rstrip('\0')) # 解密字节???
def gen_binsha(data):
shavalue = hashlib.sha256()
shavalue.update(data)
return shavalue.digest()
if __name__ == '__main__':
key='78f40cecf89'
key=gen_binsha(key.encode('utf-8'))
pc = prpcrypt(key=key) # 初始化密钥 和 iv
text='qwerqwerkkk12345'
e = pc.encrypt(text) # 加密
d = pc.decrypt(e) # 解密
print("加密:%s" % e)
print("解密:%s"% d)
print("长度:%s"% len(d))
分享到:
相关推荐
主要介绍了Python AES加密实例解析,具有一定借鉴价值,需要的朋友可以参考下
简单AES类,实现AES加密/解密,需要pycrypto支持.
本文实例为大家分享了python实现AES加密解密的具体代码,供大家参考,具体内容如下 (1)对于AES加密解密相关知识 (2)实现的功能就是输入0-16个字符,然后经过AES的加密解密最后可以得到原先的输入,运行的结果...
主要介绍了Python AES加密模块用法,结合具体实例形式分析了AES加密模块的相关使用技巧与注意事项,需要的朋友可以参考下
解密制度
文档中提供了python3实现AES加密解密方案的源代码,亲测可行
轻松实现 Python AES和Java AES/ECB/PKCS5Padding互转
Python加密与解密
整理的AES算法,包括小刀人翻译的版本和英文版本,供参考
# 密钥(key), 密斯偏移量(iv) CBC模式加密 def AES_Encrypt(key, data): vi = '0102030405060708' pad = lambda s: s + (16 - len(s) ) * chr(16 - len(s) ) data = pad(data) # 字符串补位 cipher = AES....
python基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法....
任务 AES数据加密 INTERNATIONAL MEDICAL SUMMIT FORUM 任务 AES数据加密 任务背景 AES是密码学中的高级加密标准(Advanced Encryption Standard),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。...
该文件用来对字符串和文件进行AES加密解密使用,由于服务器常用java写,所以一般是服务器端的加密,到本地的解密。该解密适配java的加密解密
python3-AES128 使用ECB模式的AES-128加密
AES加密方式有五种:ECB, CBC, CTR, CFB, OFB 从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现 python 在 Windows下使用AES时要安装的是pycryptodome 模块 pip install pycryptodome ...
aes加密算法python实现 基于AES加密算法的python.zip
之前写了一个python监控系统,里面用到了使用了AES对密码...当然了,我这里使用了PKCS5Padding,因为之前的写的python AES加密解密使用的就是PKCS5Padding,为了能够python和go互通,这里就统一使用同一种方式。 3.这
python3 + wxpython 实现 AES 加密工具 ,主要功能: 1. 选择自定义的密钥文件 2. 选择自定义的明文文件 3. 加密成密文并显示 4. 选择密文文件 5. 选择呢密钥文件 6. 进行解密并显示出明文