AES和RSA的加密过程通过面向对象的方式写成一个类,封装起来

mac2022-06-30  103

# 面向对象的方式 实现加密方法 from Crypto.Cipher import AES from Crypto import Random from binascii import b2a_hex, a2b_hex class My_Aes(): def __init__(self, key, mode = AES.MODE_CFB ): self.key = self.check_key(key) self.mode = mode self.iv = Random.new().read(AES.block_size) def check_key(self, key): """ 对秘钥进行类型检查 :param key: :return: """ if isinstance(key, bytes): assert len(key) in [16,24,32] return key elif isinstance(key, str): assert len(key.encode()) in [16,24,36] return key.encode() else: raise Exception('秘钥必须为str或者bytes类型,不能为{}'.format(type(key))) def encrypt(self, data): aes = AES.new(self.key, self.mode, self.iv) return b2a_hex(aes.encrypt(data)) def decrypt(self, data): aes = AES.new(self.key, self.mode, self.iv) print(aes.decrypt(a2b_hex(data))) if __name__ == '__main__': aes = My_Aes('abcdefghhgfedcba') data = aes.encrypt(b'hello world') aes.decrypt(data)# rsa加密 import rsaimport binasciiclass rasData(): def __init__(self, rsa_n, rsa_e, data ): self.rsa_n = int(rsa_n, 16) self.rsa_e = int(rsa_e, 16) self.data = data def rsa_en(self): key = rsa.PublicKey(self.rsa_n, self.rsa_e) data = rsa.encrypt(self.data.encode(), key) return data, binascii.b2a_hex(data).decode()if __name__ == '__main__': pubkey_n = '8d7e6949d411ce14d7d233d7160f5b2cc753930cabaaa' pubkey_e = '10002' data = '潭州学院' file = rasData(pubkey_n, pubkey_e, data) print(file.rsa_en())

转载于:https://www.cnblogs.com/wdty/p/10605347.html

相关资源:封装成C 类的AES128位加密算法
最新回复(0)