当前位置:网站首页>用户密码加密工具
用户密码加密工具
2022-08-03 04:35:00 【Dzooooone_】
加密类
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class CryptoUtil {
//加密算法
private static final String DESede_ALGORITHM = "DESede";
//加盐
private static final String KEY = "xxxx";
/**
* 文本加密
*
* @param plain 待加密文本
* @return
* @throws Exception
*/
public static final String encrypt(String plain) {
byte[] newKeys = getKeys(KEY);
try {
SecretKey secureKey = new SecretKeySpec(newKeys, DESede_ALGORITHM);
Cipher cipher = Cipher.getInstance(DESede_ALGORITHM);
cipher.init(1, secureKey);
byte[] encrypted = cipher.doFinal(plain.getBytes());
return new String(Base64.encodeBase64(encrypted));
} catch (Exception e) {
return null;
}
}
/**
* 密码解密
*
* @param cryptograph 待解密密码
* @return
* @throws Exception
*/
public static final String decrypt(String cryptograph) {
byte[] newKeys = getKeys(KEY);
byte[] encrypted = Base64.decodeBase64(cryptograph.getBytes());
try {
SecretKey secureKey = new SecretKeySpec(newKeys, DESede_ALGORITHM);
Cipher cipher = Cipher.getInstance(DESede_ALGORITHM);
cipher.init(2, secureKey);
byte[] cryptoGraphs = cipher.doFinal(encrypted);
return new String(cryptoGraphs);
} catch (Exception e) {
return null;
}
}
private static byte[] getKeys(String key) {
byte[] oldKeys = KEY.getBytes();
byte[] newKeys = new byte[24];
for (int i = 0; i < oldKeys.length && i != 24; i++)
newKeys[i] = oldKeys[i];
return newKeys;
}
public static void main(String[] args) throws Exception {
System.out.println(CryptoUtil.encrypt("xxxxxx"));
System.out.println(CryptoUtil.decrypt("gySSNZWJIyQ="));
System.out.println(CryptoUtil.decrypt("/4lOgQ80Y9LVB69nhkR1tA=="));
}
}
对用户密码先进行加密后再入库
jwt依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${jjwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>${jjwt.version}</version>
</dependency>
边栏推荐
- The flink sql task is changed, and after adding several fields to the sql, an error occurs when restoring from the previously saved savepoint.
- 社交电商:流量红利已尽,裂变营销是最低成本的获客之道
- Problems that need to be solved for interrupting the system
- 【Harmony OS】【ARK UI】ETS 上下文基本操作
- WebSocket的实际应用
- "Obs" start pushing flow failure: the Output. The StartStreamFailed call process
- [Developers must see] [push kit] Collection of typical problems of push service service 2
- 「短视频+社交电商」营销模式爆发式发展,带来的好处有什么?
- 好消息!北京、珠海PMP考试时间来啦
- 表的创建、修改与删除
猜你喜欢
随机推荐
荧光标记多肽FITC/AMC/FAM/Rhodamine/TAMRA/Cy3/Cy5/Cy7-Peptide
JS bottom handwriting
How to prepare for the test interface test data
接口测试实战| GET/POST 请求区别详解
13.机器学习基础:数据预处理与特征工程
社交电商:链动2+1模式,为什么能在电商行业生存那么久?
RequestContextHolder
Problems that need to be solved for interrupting the system
2022 Henan Mengxin League Game (4): Zhengzhou University of Light Industry E - Sleep Well
js中的闭包
Mysql如何建立索引实现语句优化
CyberArk被评为2022年Gartner特权访问管理魔力象限领导者
刚上线就狂吸70W粉,新型商业模式“分享购”来了,你知道吗?
社交电商:流量红利已尽,裂变营销是最低成本的获客之道
表的创建、修改与删除
closures in js
Two ways to simulate multi-user login in Jmeter
6.神经网络剖析
在线密码生成工具推荐
redis键值出现 xacxedx00x05tx00&的解决方法