通過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)
Java實現檔案的RSA和DES加密演算法
根據金鑰型別不同將現代密碼技術分為兩類 對稱加密演算法 秘密鑰匙加密 和非對稱加密演算法 公開金鑰加密 對稱鑰匙加密系統是加密和解密均採用同一把秘密鑰匙,而且通訊雙方都必須獲得這把鑰匙,並保持鑰匙的秘密。非對稱金鑰加密系統採用的加密鑰匙 公鑰 和解密鑰匙 私鑰 是不同的。1 對稱加密演算法 對稱加密...
DES演算法,標頭檔案
2001年02月16日 08 57 00 des演算法,標頭檔案 自己改寫過,請指教 ifndef des h define des h class des private void des unsigned char in,unsigned char out,int blocks void des...
des演算法描述 DES演算法描述簡介
des演算法描述簡介 1 簡介 des是data encryption standard 資料加密標準 的縮寫。它是由ibm公司研製的一種加密演算法,美國國家標準局於1977年公布把它作為非機要部門使用的資料加密標準,二十年來,它一直活躍在國際保密通訊的舞台上,扮演了十分重要的角色 10 des是乙...