通过RSA算法加密以及DES算法对文件加密 --python
原理:python 利用迭代器读取大文件,然后通过rsa和des混合加密算法对数据进行加密。des是对称性加密算法,rsa是非对称性加密算法。des对文件加密,通过rsa对des的key进行加密。解密时用rsa解密key,然后key解密文件内容。
希望对大家有所帮助。
RSA算法利用python的M2Crypto模块。实现代码如下:
class RSA():
prikey_file = ‘/home/rsakey/key.pem’
public_key = ‘/home/rsakey/pubkey.pem’
'''
input:
msg:str
file_name :privatekey file path
output:bytes
'''
@classmethod
def rsa_encrypt(cls, msg, file_name):
msg = msg.encode(encoding= 'utf-8')
rsa_pri = M2Crypto.RSA.load_key(file_name) #导入密钥
ctxt_pri = rsa_pri.private_encrypt(msg, M2Crypto.RSA.pkcs1_padding)
print ('密文:%s'% ctxt_pri,type(ctxt_pri))
return ctxt_pri
'''
input:
msg:bytes
file_name : publickey file path
output:bytes
'''
@classmethod
def rsa_decrypt(cls, msg, file_name):
with open(file_name, 'rb') as f:
pub_key = f.read()
bio = M2Crypto.BIO.MemoryBuffer(pub_key)
rsa_pub = M2Crypto.RSA.load_pub_key_bio(bio)
output = rsa_pub.public_decrypt(msg, M2Crypto.RSA.pkcs1_padding) # 解密
return output
DES算法实现如下:
class DES():
key = “test_KEY” # 密钥
iv = “test__IV” # 偏转向量
@classmethod
def des_encrypt_key(cls):
dessecretkey = RSA.rsa_encrypt(cls.key, RSA.prikey_file)
return dessecretkey
@classmethod
def des_decrypt_key(cls, dessecretkey):
deskey = RSA.rsa_decrypt(dessecretkey, RSA.public_key)
return deskey
@classmethod
def des_encrypt_proc(cls, data):
k = des(cls.key, CBC, cls.iv, pad = None, padmode = PAD_PKCS5)
d = k.encrypt(data)
return b2a_hex(d)
@classmethod
def des_descrypt_proc(cls, data, dessecretkey):
key = cls.des_decrypt_key(dessecretkey)
k = des(key, CBC, cls.iv, pad=None, padmode= PAD_PKCS5)
de = k.decrypt(a2b_hex(data), padmode= PAD_PKCS5)
return a2b_hex(de)