第一種,使用hutool
第一步導入pom
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.1.19</version>
</dependency>
這個就是加密
package com.test;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.AES;
public class test5 {
public static void main(String[] args) {
String content = "test中文";
// 隨機生成密鑰
//byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();\
String str="64asf64asf4asdf5";
byte[] key=str.getBytes();
// 構建
AES aes = SecureUtil.aes(key);
// 加密爲16進製表示
String encryptHex = aes.encryptHex(content);
// 解密爲原字符串
String decryptStr = aes.decryptStr(encryptHex);
System.out.println(encryptHex);
}
}
這個就是解密
str就是鹽,到時候寫配置文件裏
package com.test;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.AES;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
public class test6 {
public static void main(String[] args) {
String encryptHex="36d6feef484e85fee9ff282b4c1c9eb9";
// 隨機生成密鑰
// byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();
String str="64asf64asf4asdf5";
byte[] key=str.getBytes();
// 構建
AES aes = SecureUtil.aes(key);
// 解密爲原字符串
String decryptStr = aes.decryptStr(encryptHex);
System.out.println(decryptStr);
}
}
還有一種方法是spring的
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
// 啓動類里加
@Bean
public BCryptPasswordEncoder encoder(){
return new BCryptPasswordEncoder();
}
// 用的時候引入
@Autowired
private BCryptPasswordEncoder encoder;
// 註冊時這樣就加密了
user.setPassword(encoder.encode(user.getPassword()));
// 登錄時校驗密碼
encoder.matches(password, user.getPassword())
也可以始終這種動態的鹽
package com.test;
import org.apache.commons.lang3.RandomStringUtils;
import cn.hutool.crypto.SecureUtil;
public class test7 {
public static void main(String[] args) {
String phonenum = "13578942677";
String password = "wodemimashi123456";
String random = RandomStringUtils.randomAscii(10);// .randomNumeric(10);
System.out.println(random);
String data = phonenum + password + random;
String zuizhongmima = SecureUtil.md5(data);
System.out.println(zuizhongmima);
// 30c4f092608b5c93b8e49080393f35e4
}
}
組成密碼的字段可以動態組合,註冊時把鹽存儲到用戶的數據裏,每次登錄的時候取出來用來校驗
hutool裏有很多關於密碼的處理的工具類都可以使用