工具类
提供公共的加密、解密工具类帮助业务系统快速实现字符串的加密解密。
适用范围
Pangea v2.1.3+
工具类描述
提供方法 | 作用描述 |
---|---|
parseByte2HexStr(byte buf[]) | 将二进制转换成16进制 |
parseHexStr2Byte(String hexStr) | 将16进制转换为二进制 |
MD5(String res) | md5加密算法进行加密(不可逆) |
MD5(String res, String key) | md5加密算法进行加密(不可逆) |
SHA1(String res) | 使用SHA1加密算法进行加密(不可逆) |
SHA1(String res, String key) | 使用SHA1加密算法进行加密(不可逆) |
DESencode(String res, String key) | 使用DES加密算法进行加密(可逆) |
DESdecode(String res, String key) | 对使用DES加密算法的密文进行解密(可逆) |
AESencode(String res, String key) | 使用AES加密算法经行加密(可逆) |
AESdecode(String res, String key) | 对使用AES加密算法的密文进行解密 |
XORencode(String res, String key) | 使用异或进行加密 |
XORdecode(String res, String key) | 使用异或进行解密 |
XOR(int res, String key) | 直接使用异或(第一调用加密,第二次调用解密) |
Base64Encode(String res) | 使用Base64进行加密 |
Base64Decode(String res) | 使用Base64进行解密 |
快速上手
1、在业务模块的pom
文件中添加依赖
html
<!--pangea公共工具包 -->
<dependency>
<groupId>com.hisense.pangea</groupId>
<artifactId>pangea-common-utils</artifactId>
<version>${pangea.version}</version>
</dependency>
2、方法中调用加密解密工具类——EncryptUtil
以DES加密算法进行加密解密为例:
java
import com.hisense.pangea.utils.EncryptUtil;
/**
* 测试使用DES加密算法进行加密
* @param res 需要加密的原文
* @param key 秘钥
* @return
*/
public String testEncode(String res, String key) {
return EncryptUtil.DESencode(res, key);
}
/**
* 对使用DES加密算法的密文进行解密
* @param res 需要解密的密文
* @param key 秘钥
* @return
*/
public String testDncode(String res, String key) {
return EncryptUtil.DESdecode(res, key);
}
注意事项
1.使用pangea-common-utils包可能出现错误:No qualifying bean of type 'org.springframework.web.client.RestTemplate' available: expected at least 1 bean which qualifies as autowire candidate.
解决方案:
java
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class Config {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
2.使用DES、AES算法进行加密解密时可能存在本地
调用加密解密成功,发布到生产服务器
加密解密失败问题。
原因分析:
DES、AES算法均使用SecureRandom,SecureRandom由于环境不同可能会产生熵源不足时阻塞问题
三种解决方案:
a: 获取SecureRandom 实例时指定SHA1PRNG算法
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
b: 启动命令加上参数:
-Djava.security.egd=file:/dev/urandom
c: 使用org.apache.commons.lang3包的RandomStringUtils。