前后端传数据时内容含有密码需要对密码进行加密传输前后端加解密代码该如何写前端使用vue后端使用的springboot并说出其中使用的依赖需要怎么下载及版本后端是maven
前端加解密代码
在前端,我们可以使用CryptoJS来进行密码的加解密。首先需要下载CryptoJS,可以使用npm进行下载:
npm install crypto-js
在Vue组件中,引入CryptoJS:
import CryptoJS from 'crypto-js'
接下来,我们可以定义一个加密方法,用于加密密码:
encrypt(password) {
const key = CryptoJS.enc.Utf8.parse('这里写加密的key') // 将key转换为Utf8格式
const srcs = CryptoJS.enc.Utf8.parse(password) // 将密码转换为Utf8格式
const encrypted = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB, // 加密模式为ECB
padding: CryptoJS.pad.Pkcs7 // 填充模式为Pkcs7
}).toString()
return encrypted
}
其中,key用于加密和解密的密钥,srcs是需要加密的密码,AES.encrypt()方法用于加密,最后返回加密后的结果。
我们还需要定义一个解密方法,用于解密从后端传回来的加密密码:
decrypt(encryptedPassword) {
const key = CryptoJS.enc.Utf8.parse('这里写加密的key') // 将key转换为Utf8格式
const decrypt = CryptoJS.AES.decrypt(encryptedPassword, key, {
mode: CryptoJS.mode.ECB, // 解密模式为ECB
padding: CryptoJS.pad.Pkcs7 // 填充模式为Pkcs7
})
const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
return decryptedStr.toString()
}
其中,encryptedPassword是从后端传回来的加密密码,AES.decrypt()方法用于解密,最后返回解密后的结果。
后端加解密代码
在后端,我们可以使用Spring Security来进行密码的加解密。首先需要在pom.xml中添加Spring Security的依赖:
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-crypto</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
接下来,我们可以定义一个加密方法,用于加密密码:
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
public class PasswordEncoderUtil {
public static String encrypt(String password) {
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
return encoder.encode(password);
}
}
其中,BCryptPasswordEncoder是Spring Security提供的加密类,我们将密码传入BCryptPasswordEncoder的encode()方法中,即可得到加密后的密码。
我们还需要定义一个解密方法,用于解密前端传回来的加密密码。但是,由于密码加密通常是不可逆的,我们无法直接解密前端传回来的加密密码。所以,我们只能将前端传回来的加密密码与数据库中存储的加密密码进行比对,从而判断密码是否正确。
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
public class PasswordEncoderUtil {
public static boolean match(String password, String encodedPassword) {
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
return encoder.matches(password, encodedPassword);
}
}
其中,BCryptPasswordEncoder的matches()方法用于比对传入的密码和加密后的密码是否一致,返回true或false。
综上所述,我们可以使用CryptoJS和Spring Security来进行密码的加解密,从而保证前后端传输的数据的安全性
原文地址: https://www.cveoy.top/t/topic/fEjT 著作权归作者所有。请勿转载和采集!