幾個基本概念:
加密:傳送方利用接收方的公鑰對要傳送的明文進行加密。
解密:接受方利用自己的私鑰進行解密。
公鑰和私鑰配對的,用公鑰加密的檔案,只有對應的私鑰才能解密。當然也可以反過來,用私鑰加密,用對應的公鑰進行解密。
簽名:傳送方用乙個雜湊函式從報文文字中生成報文摘要,然後用自己的私人金鑰對這個摘要進行加密,得到的就是這個報文對應的數字簽名。通常來說,傳送方會把數字簽名和報文原文一併傳送給接受者。過程示例如下圖:
驗籤:接收方得到原始報文和數字簽名後,用同乙個雜湊函式從報文中生成摘要a,另外,用傳送方提供的公鑰對數字簽名進行解密,得到摘要b,對比a和b是否相同,就可以得知報文有沒有被篡改過。過程示例如下:
其實, 數字簽名有兩種功效:一是能確定訊息確實是由傳送方簽名併發出來的,因為別人假冒不了傳送方的簽名。二是數字簽名能確定訊息的完整性。
很容易看得出來,數字簽名技術有乙個問題,就是原始報文是明文傳輸的,這對一些敏感內容來說通常是不合適的,所以有些時候,這兩種技術會結合起來使用。
傳送方用自己的私鑰完成數字簽名,然後再用接收方的公鑰對報文進行加密,將數字簽名和報文傳送給接收方。
接收方在拿到密文和數字簽名後,先用自己的私鑰對密文進行解密,得到明文,然後再用傳送方提供的公鑰進行驗籤,確保傳送方身份的準確性,以及報文並沒有被篡改過。
php rsa 加密,解密,簽名,驗籤詳解
php rsa 加密,解密,簽名,驗籤 由於對接第三方機構使用的是j a版本的rsa加解密方法,所有剛開始在網上搜到很多php版本的rsa加解密,但是對接j a大多都不適用。以下php版本是適用於對接j a介面,j a適用金鑰再php語言使用是需要新增 begin certificate end c...
證書簽名驗籤以及加密解密
簽名,驗籤的理解 一 公鑰加密 假設一下,我找了兩個數字,乙個是1,乙個是2。我喜歡2這個數字,就保留起來,不告訴你們 私鑰 然後我告訴大家,1是我的公鑰。我有乙個檔案,不能讓別人看,我就用1加密了。別人找到了這個檔案,但是他不知道2就是解密的私鑰啊,所以他解不開,只有我可以用 數字2,就是我的私鑰...
RSA 加密 解密 加簽 驗籤
1.公鑰與私鑰碼生成 2.獲取公鑰 獲取公鑰 return private publickey getpublickey catch exception e 獲取私鑰 獲取私鑰 return private privatekey getprivatekey catch exception e bas...