Skip to content

工具类

提供公共的加密、解密工具类帮助业务系统快速实现字符串的加密解密。

适用范围

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。