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))
分享到:
相关推荐
**Python3中的AES加密解密** 在信息安全领域,数据加密是一种常见的保护措施,用于保护敏感信息免受未经授权的访问。AES(Advanced Encryption Standard),即高级加密标准,是目前广泛使用的对称加密算法之一。它...
简单AES类,实现AES加密/解密,需要pycrypto支持.
在Python中,我们可以利用`pycryptodome`库来实现AES加密。这个库包含了`Crypto.Cipher.AES`模块,用于处理AES加密和解密操作。在上述代码中,我们创建了一个名为`MyCrypto`的类,该类实现了AES加密和解密功能。 ...
本篇文章将深入探讨AES加密解密机制以及在Python中的实现,同时也会提及关于key长度的相关知识。 AES加密的基本原理是通过一系列复杂的数学运算(如字节替换、行位移、列混淆和轮密钥加)将明文转换为密文。标准AES...
Python AES加密模块是用于实现高级加密标准(AES)的工具,它提供了一种强大的数据保护机制,适用于存储和传输敏感信息。AES是一种分组密码,以128位的数据块为单位进行加密和解密,支持128、192和256位的密钥长度。...
本文实例为大家分享了python实现AES加密解密的具体代码,供大家参考,具体内容如下 (1)对于AES加密解密相关知识 (2)实现的功能就是输入0-16个字符,然后经过AES的加密解密最后可以得到原先的输入,运行的结果...
Python中可以使用PyCrypto或cryptography库实现AES加密解密。 2. RSA:RSA是非对称加密算法,用于公钥基础设施(PKI)。它包含一对密钥——公钥和私钥,公钥用于加密,私钥用于解密。 3. SHA哈希:SHA(安全哈希算法...
轻松实现 Python AES和Java AES/ECB/PKCS5Padding互转
整理的AES算法,包括小刀人翻译的版本和英文版本,供参考
python基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法.zippython基于AES加密算法....
在Python中,我们可以使用第三方库如`Crypto`来实现AES加密和解密。`Crypto`模块提供了丰富的加密和哈希算法,包括AES。然而,需要注意的是,`Crypto`并非Python标准库的一部分,因此在使用之前需要先通过pip等工具...
2. **创建AES对象**:使用`pycryptodome.Cipher`库的`AES.new()`方法创建一个AES加密器实例,传入密钥和工作模式ECB,例如`cipher = AES.new(key, AES.MODE_ECB)`。 3. **填充数据**:AES加密要求输入数据长度是16...
6. Python的`cryptography`库:提供AES加密和解密功能。 7. 跨语言互通:确保不同编程环境下的加解密参数一致,以实现数据的解密。 8. 密钥管理:如何安全地存储和共享密钥,以确保通信的安全性。 以上就是关于...
Python AES(Advanced Encryption Standard)算法库是用于加密和解密数据的强大工具,它基于标准的AES规范,提供了在Python环境中实现AES加密算法的各种功能。AES是一种块密码,它使用固定大小的128位(16字节)块对...
该文件用来对字符串和文件进行AES加密解密使用,由于服务器常用java写,所以一般是服务器端的加密,到本地的解密。该解密适配java的加密解密
本教程旨在通过简洁明了的方式,帮助你理解和掌握AES加密算法。 首先,AES的工作原理基于替换和置换两大部分,包括字节代换、行移位、列混淆和轮密钥加四个步骤。这些操作在128位的数据块(称为状态)上进行,其中...
AES加密方式有五种:ECB, CBC, CTR, CFB, OFB 从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现 python 在 Windows下使用AES时要安装的是pycryptodome 模块 pip install pycryptodome ...
AES加密技术通过一系列复杂的数学运算将原始数据转换成不可读的形式,只有拥有正确密钥的人才能解密并恢复数据的原貌。 在本案例中,"AES 加密BMP图片"是指使用AES算法来对位图(BMP)文件进行加密的过程。BMP是一...