密碼學MD5|DES|RSA加密解密(內有源碼)

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/Anwhere_jin/article/details/77488356

平臺: VS2015

TOOL


The MD5 algorithm is a widely used hash function producing a 128-bit hash value. Although MD5 was initially designed to be used as a cryptographic hash function, it has been found to suffer from extensive vulnerabilities. It can still be used as a checksum to verify data integrity, but only against unintentional corruption.

Like most hash functions, MD5 is neither encryption nor encoding. It can be cracked by brute-force attack and suffers from extensive vulnerabilities as detailed in the security section below.

MD5 was designed by Ronald Rivest in 1991 to replace an earlier hash function MD4.[3] The source code in RFC 1321 contains a “by attribution” RSA license. The abbreviation “MD” stands for “Message Digest.”

The security of the MD5 has been severely compromised, with its weaknesses having been exploited in the field, most infamously by the Flame malware in 2012. The CMU Software Engineering Institute considers MD5 essentially “cryptographically broken and unsuitable for further use”.[4] Despite this known vulnerability, MD5 remains in use.

MD5


DES算法把64位的明文輸入塊變爲64位的密文輸出塊,它所使用的密鑰也是64位(實際用到了56位,第8、
DES算法流程
DES算法流程
16、24、32、40、48、56、64位是校驗位, 使得每個密鑰都有奇數個1),其算法主要分爲兩步:
1)初始置換
其功能是把輸入的64位數據塊按位重新組合,並把輸出分爲L0、R0兩部分,每部分各長32位,其置換規則爲將輸入的第58位換到第一位,第50位換到第2位……依此類推,最後一位是原來的第7位。L0、R0則是換位輸出後的兩部分,L0是輸出的左32位,R0是右32位,例:設置換前的輸入值爲D1D2D3……D64,則經過初始置換後的結果爲:L0=D58D50……D8;R0=D57D49……D7。
其置換規則見下表:
58,50,42,34,26,18,10,2,
60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,
64,56,48,40,32,24,16,8,
57,49,41,33,25,17,9,1,
59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,
63,55,47,39,31,23,15,7,
2)逆置換
經過16次迭代運算後,得到L16、R16,將此作爲輸入,進行逆置換,逆置換正好是初始置換的逆運算,由此即得到密文輸出。
此算法是對稱加密算法體系中的代表,在計算機網絡系統中廣泛使用。

DES


RSA公開密鑰密碼體制。所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種“由已知加密密鑰推導出解密密鑰在計算上是不可行的”密碼體制。
在公開密鑰密碼體制中,加密密鑰(即公開密鑰)PK是公開信息,而解密密鑰(即祕密密鑰)SK是需要保密的。加密算法E和解密算法D也都是公開的。雖然解密密鑰SK是由公開密鑰PK決定的,但卻不能根據PK計算出SK。
正是基於這種理論,1978年出現了著名的RSA算法,它通常是先生成一對RSA 密鑰,其中之一是保密密鑰,由用戶保存;另一個爲公開密鑰,可對外公開,甚至可在網絡服務器中註冊。爲提高保密強度,RSA密鑰至少爲500位長,一般推薦使用1024位。這就使加密的計算量很大。爲減少計算量,在傳送信息時,常採用傳統加密方法與公開密鑰加密方法相結合的方式,即信息採用改進的DES或IDEA對話密鑰加密,然後使用RSA密鑰加密對話密鑰和信息摘要。對方收到信息後,用不同的密鑰解密並可覈對信息摘要。

RSA

源碼下載

點擊下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章