數字簽名與數字加密

數字簽名主要通過如下幾個過程:算法

信息發送者使用一單向散列函數(HASH函數)對信息生成信息摘要;函數

信息發送者使用本身的私鑰簽名信息摘要;加密

信息發送者把信息自己和已簽名的信息摘要一塊兒發送出去;class

信息接收者經過使用與信息發送者使用的同一個單向散列函數(HASH函數)對接收的信息自己生成新的信息摘要,再使用信息發送者的公鑰對信息摘要進行驗證,以確認信息發送者的身份和信息是否被修改過。方法

數字加密主要通過如下幾個過程:數據

當信息發送者須要發送信息時,首先生成一個對稱密鑰,用該對稱密鑰加密要發送的報文;加密算法

信息發送者用信息接收者的公鑰加密上述對稱密鑰;文件

信息發送者將第一步和第二步的結果結合在一塊兒傳給信息接收者,稱爲數字信封;co

信息接收者使用本身的私鑰解密被加密的對稱密鑰,再用此對稱密鑰解密被髮送方加密的密文,獲得真正的原文。解密

數字簽名和數字加密的過程雖然都使用公開密鑰體系,但實現的過程正好相反,使用的密鑰對也不一樣。數字簽名使用的是發送方的密鑰對,發送方用本身的私有密鑰進行加密,接收方用發送方的公開密鑰進行解密,這是一個一對多的關係,任何擁有發送方公開密鑰的人均可以驗證數字簽名的正確性。數字加密則使用的是接收方的密鑰對,這是多對一的關係,任何知道接收方公開密鑰的人均可以向接收方發送加密信息,只有惟一擁有接收方私有密鑰的人才能對信息解密。另外,數字簽名只採用了非對稱密鑰加密算法,它能保證發送信息的完整性、身份認證和不能否認性,而數字加密採用了對稱密鑰加密算法和非對稱密鑰加密算法相結合的方法,它能保證發送信息保密性。

 

更形象的說法:

1、公鑰加密

假設一下,我找了兩個數字,一個是1,一個是2。我喜歡2這個數字,就保留起來,不告訴大家(私鑰),而後我告訴你們,1是個人公鑰。 我有一個文件,不能讓別人看,我就用1加密了。別人找到了這個文件,可是他不知道2就是解密的私鑰啊,因此他解不開,只有我能夠用 數字2,就是個人私鑰,來解密。這樣我就能夠保護數據了。 個人好朋友x用個人公鑰1加密了字符a,加密後成了b,放在網上。別人偷到了這個文件,可是別人解不開,由於別人不知道2就是個人私鑰, 只有我才能解密,解密後就獲得a。這樣,咱們就能夠傳送加密的數據了。

2、私鑰簽名

若是我用私鑰加密一段數據(固然只有我能夠用私鑰加密,由於只有我知道2是個人私鑰),結果全部的人都看到個人內容了,由於他們都知 道個人公鑰是1,那麼這種加密有什麼用處呢? 可是個人好朋友x說有人冒充我給他發信。怎麼辦呢?我把我要發的信,內容是c,用個人私鑰2,加密,加密後的內容是d,發給x,再告訴他 解密看是否是c。他用個人公鑰1解密,發現果真是c。 這個時候,他會想到,可以用個人公鑰解密的數據,必然是用個人私鑰加的密。只有我知道我得私鑰,所以他就能夠確認確實是我發的東西。 這樣咱們就能確認發送方身份了。這個過程叫作數字簽名。固然具體的過程要稍微複雜一些。用私鑰來加密數據,用途就是數字簽名。

相關文章
相關標籤/搜索