軟件設計師教程在講加密技術和認證技術的時候,提到了數字簽名和數字加密,兩者還是有區別的,以下對兩者的主要過程做一個簡單介紹。
預備知識
對稱加密:
對稱加密采用了對稱密碼編碼技術,特點是文件加密和解密使用的相同的密鑰,在密碼學中稱為對稱加密法。常用的對稱加密算法有:數據加密標準算法(Digital Encryption Standart, DES)、三重DES、RC-5、國際數據加密算法(International Data Encryption Adleman, IDEA)、高級加密標準算法(Advanced Encryption Standard, AES)。
非對稱加密:
非對稱加密算法需要兩個密鑰:公開密鑰(Publickey) 和 私有密鑰(Privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只要用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。
因為加密和解密使用的是兩個不同的密鑰,所以稱為非對稱加密算法。常用的非對稱加密算法:RSA(Rivest, Shamir and Adleman)。
Hash函數:
Hash(哈希)函數提供了這樣一個計算過程:輸入一個長度不固定的字符串,返回一串固定長度的字符串,又稱Hash值。單向Hash函數用于產生信息摘要。
信息摘要簡要地描述了一份較長的信息或文件,可以被看作一份長文件的“數字指紋”。信息摘要用于創建數字簽名,對于特定的文件而言,信息摘要是唯一的。常用算法有:MD5算法。
數字簽名
數字簽名主要經過以下幾個過程
1. 信息發送者使用一個單向散列函數(Hash函數)對信息生成信息摘要
2. 信息發送者使用自己的私鑰簽名信息摘要
3. 信息發送者把信息本身和已簽名的信息摘要一起發送出去
4. 信息接收者通過使用與信息發送者使用的同一個單向散列函數(Hash函數)對接收的信息本身生成新的信息摘要,再使用信息發送者的公鑰對信息摘要進行驗證,以確認信息發送者的身份和信息是否被修改過
過程圖示如下:
數字加密
數字加密主要經過以下幾個過程
1. 當信息發送者需要發送信息時,首先生成一個對稱密鑰,用該對稱密鑰加密要發送的報文
2. 信息發送者用信息接收者的公鑰加密上述對稱密鑰
3. 信息發送者將1、2步驟的結果結合在一起傳給信息接收者,稱為數字信封
4. 信息接收者使用自己的私鑰解密被加密的對稱密鑰,在用此對稱密鑰解密被發送方加密的密文,得到真正的原文
過程圖示如下:
總結
數字簽名使用的是發送方的密鑰對,發送方用自己的私有密鑰進行加密,接收方用發送方的公開密鑰進行解密,這是一個一對多的關系,任何擁有發送方公開密鑰的人都可以驗證數字簽名的正確性;數字加密則使用的是接收方的密鑰對,這是多對一的關系,任何知道接收方公開密鑰的人都可以向接收方發送加密信息,只有唯一擁有接收方私有密鑰的人才能對信息解密。
原文:https://www.cnblogs.com/Atone/p/11771353.html