本文概览:介绍了RSA的简单使用,即“公钥加密-私钥解密”和“私钥加密-公钥解密”。

1 RSA公钥和私钥介绍

1、为什么使用RSA

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密算法。

RSA是一种非对称加密算法,是对对称加密算法的改进。对称加密算法,是指使用同一个秘钥进行加密和解密,这样一旦秘钥泄漏,那么此时就可以通过这个秘钥把密文生成明文数据。非对称加密算法是指加密和解密的秘钥不一样,如:我们常用RSA的一种方式是“公钥加密-私钥解密”,在这种式下,即使有人获取到公钥,也无法破解数据,因为只有获取到私钥才能解密使用公钥加密的数据,而私钥一般保留在服务器端,不会被窃取。

2  解密者拥有私钥,并且将由私钥计算生成的公钥发布给加密者。加密都使用公钥进行加密,并将密文发送到解密者,解密者用私钥解密将密文解码为明文。RSA使用的流程如下:

Snip20170209_122

流程图源码:

2 应用场景

1、加密敏感数据

前端传来的银行卡号、支付密码等信息时,进行加密,后端接受到这些数据再进行解密。一般选择公钥加密-私钥解密的方式。

2、实现签名

数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。参考

API实现签名验证

 

3 在项目中使用场景

RSA在项目中使用

3 通过java使用RSA

使用RSA加密机密时,经常使用的两种方式为:私钥加密公钥解密公钥加密私钥解密

3.1 生成公钥和秘钥

1、生成公钥和私钥

执行结果为

2、 为什么要设置为1024

从网络上摘录如下:

目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。

3.2 公钥加密和私钥解密

代码如下

执行结果为:

明文=12332421eeec

3.3 私钥加密和公钥解密

代码如下

执行结果为

明文=12332421eeec

4 参考文献

1、RSA算法原理(一) http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

2、 RSA算法原理(二)http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html

(==全文完==)

分类&标签

发表评论

电子邮件地址不会被公开。 必填项已用*标注