數字簽名(又稱公鑰數字簽名)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現,用於鑑別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用於簽名,另一個用於驗證。
數字簽名,就是隻有信息的發送者才能產生的別人無法僞造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。
數字簽名算法:
1、數字簽名算法可以看做是一個帶有密鑰的消息摘要算法,並且這個密鑰包括了公鑰和私鑰。他是非對稱加密算法和消息摘要算法的結合體
2、數字簽名算法是公鑰基礎設施(PKI),以及許多網絡安全機制的基礎
3、數字簽名算法有抗否認的作用
4、遵循“私鑰簽名,公鑰驗證”規則
5、常見的數字簽名算法有RSA/DSA/ECDSA
6、java6支持實現了DSA算法、部分RSA算法需要bouncycastle支持,最牛的ECDSA算法(微軟用來做操作系統序列號的那個)完全需要Bouncycastle支持
二、模型分析
1、甲方構造密鑰對(公鑰+私鑰),公佈公鑰給乙方
2、甲方使用私鑰對數據進行簽名,然後將“簽名+數據” 發送給乙方
3、乙方使用公鑰+數字簽名 驗證數據
爲了保證數據來源的安全性,可以使用數字證書,在接收方進行驗證之前,可以先對數字證書進行驗證,然後再驗證數字簽名。最後比對解密以後的數據摘要和發送方給的摘要是否一致,從而確定該消息的來源。
原文:https://blog.csdn.net/kongqz/article/details/6305548