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

相关文章
相关标签/搜索