Java开发 | 非对称加密算法实现登陆账号密码加密传输功能

什么是非对称加密算法
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。
工作原理
1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。
2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
4.A将这个消息发给B(已经用B的公钥加密消息)。
5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
使用非对称加密实现登录功能
1. 需要用到的jar包和js
1)前台需要使用到 jsencrypt.min.js
2)后台Java需要用到以下jar包:
2. 前台html代码
3. js代码
1)需要先从Java后台获取密钥(第一个红框)
2)使用密钥对账号、密码进行加密,再传递到后台验证登录信息
4. 后台代码
1)RSA加密工具(以下三张图片代码均在RSAUtil类里)
以上代码截图即为RSA加密工具类,红色框的随机数可以改为一个固定值,如果数据库内的数据也存为加密的文字,可以修改为固定值。
2)调用加密工具对前台传递过来的账号密码进行解密(login的server层的实现类)
此处的逻辑是将获取的前台账号和密码调用RSAUtil类的解密方法进行解密,然后再通过对比用户名和密码实现账号验证功能。