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

Java
作者:dulucy
发布时间:2025-05-12 22:22:17
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包:

<!-- 非对称加密 -->
<dependency>
	<groupId>org.bouncycastle</groupId>
	<artifactId>bcprov-jdk15on</artifactId>
	<version>1.60</version>
</dependency>
<dependency>
	<groupId>commons-codec</groupId>
	<artifactId>commons-codec</artifactId>
	<version>1.10</version>
</dependency>

2. 前台html代码

image.png

3. js代码

image.png 1)需要先从Java后台获取密钥(第一个红框)

2)使用密钥对账号、密码进行加密,再传递到后台验证登录信息

4. 后台代码

1)RSA加密工具(以下三张图片代码均在RSAUtil类里) image.png image.png image.png 以上代码截图即为RSA加密工具类,红色框的随机数可以改为一个固定值,如果数据库内的数据也存为加密的文字,可以修改为固定值。

2)调用加密工具对前台传递过来的账号密码进行解密(login的server层的实现类) image.png

此处的逻辑是将获取的前台账号和密码调用RSAUtil类的解密方法进行解密,然后再通过对比用户名和密码实现账号验证功能。