使用java-信息安全(五)-非對稱加密算法RSA項目中RSAgit
RSA簽名流程:github
發送方—>構建密鑰對-》公佈密鑰給接收方—>使用私鑰對數據簽名-》發送簽名、數據給接收方。
接收方—》使用公鑰、簽名驗證數據算法
算法 | 密鑰長度 | 默認長度 | 簽名長度 | 實現的方 |
MD2withRSA | 512-65536 (64的整數倍) |
1024 | 同密鑰 | JDK |
MD5withRSA | 同上 | 1024 | 同密鑰 | JDK |
SHA1withRSA | ... | 1024 | 同密鑰 | JDK |
SHA224withRSA | ... | 2048 | 同密鑰 | BC |
SHA256withRSA | ... | 2048 | 同密鑰 | BC |
SHA384withRSA | ... | 2048 | 同密鑰 | BC |
SHA512withRSA | ... | 2048 | 同密鑰 | BC |
RIPEMD128withRSA | 2048 | 同密鑰 | BC | |
RIPEMD160withRSA | 同上 | 2048 | 同密鑰 | BC |
// 如下指示方便理解,並不是真實場景 // 銀行【公鑰,私鑰】----我的【銀行的公鑰】 // 1、我的→銀行【RSA公鑰加密】 // 1.我的發給銀行密碼,使用銀行公鑰進行加密,發給銀行 // 2.銀行讀取解密後,準備回饋我的信息 // 2、銀行→我的【銀行數字簽名】 // 注:因爲我的沒有公鑰,私鑰,銀行也就無法用我的的公鑰進行數據加密,可是爲了確保信息是銀行發的,使用數字簽名 // 1.銀行將要反饋給我的的數據進行,數字摘要【MD5,sha】等,將數字摘要用私鑰加密, // 2.此時,銀行將要發數據與私鑰加密後的sign一塊兒發給用戶 // 3.用戶收到數據與簽名,用公鑰對簽名進行解密,解密成功,說明信息是銀行發的 // 4.用戶將數據用與銀行約定好的數字摘要算法,進行數字摘要,對比解密後的簽名與此簽名是否一致,一致即數據完整 // 補充1,爲了防止,別人僞造銀行,因此須要使用數字證書,對公鑰進行認證,就不會被僞造