java-信息安全(五)-非對稱加密算法RSA

概述

信息安全基本概念:git

  • RSA算法(Ron Rivest、Adi Shamir、Leonard Adleman,人名組合)

RSA

  RSA公鑰加密算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一塊兒提出的。github

  RSA算法基於一個十分簡單的數論事實:將兩個大質數相乘十分容易,可是想要對其乘積進行因式分解卻極其困難,所以能夠將乘積公開做爲加密密鑰。算法

  RSA公開密鑰密碼體制。所謂的公開密鑰密碼體制就是使用不一樣的加密密鑰與解密密鑰,是一種「由已知加密密鑰推導出解密密鑰在計算上是不可行的」密碼體制。安全

  在公開密鑰密碼體制中,加密密鑰(即公開密鑰)PK是公開信息,而解密密鑰(即祕密密鑰)SK是須要保密的。加密算法E和解密算法D也都是公開的。雖然解密密鑰SK是由公開密鑰PK決定的,但卻不能根據PK計算出SK。服務器

  正是基於這種理論,1978年出現了著名的RSA算法,它一般是先生成一對RSA 密鑰,其中之一是保密密鑰,由用戶保存;另外一個爲公開密鑰,可對外公開,甚至可在網絡服務器中註冊。爲提升保密強度,RSA密鑰至少爲500位長,通常推薦使用1024位。這就使加密的計算量很大。爲減小計算量,在傳送信息時,常採用傳統加密方法與公開密鑰加密方法相結合的方式,即信息採用改進的DES或IDEA對話密鑰加密,而後使用RSA密鑰加密對話密鑰和信息摘要。對方收到信息後,用不一樣的密鑰解密並可覈對信息摘要。網絡

  RSA密鑰長度隨着保密級別提升,增長很快。下表列出了對同一安全級別所對應的密鑰長度。加密

保密級別
對稱密鑰長度(bit)
RSA密鑰長度(bit)
ECC密鑰長度(bit)
保密年限
80
80
1024
160
2010
112
112
2048
224
2030
128
128
3072
256
2040
192
192
7680
384
2080
256
256
15360
512
2120

基本流程

  (1)乙方生成兩把密鑰(公鑰和私鑰)。公鑰是公開的,任何人均可以得到,私鑰則是保密的。htm

  (2)甲方獲取乙方的公鑰,而後用它對信息加密。get

  (3)乙方獲得加密後的信息,用私鑰解密。 it

示例代碼

代碼地址:https://github.com/bjlhx15/algorithm-sign.git

相關文章
相關標籤/搜索