常用的字符串加密解密工具类

简介: 常用的字符串加密解密工具类
package org.util;
import java.security.MessageDigest;  
import javax.crypto.KeyGenerator;  
import javax.crypto.Mac;  
import javax.crypto.SecretKey;  
import javax.crypto.spec.SecretKeySpec;  
import sun.misc.BASE64Decoder;  
import sun.misc.BASE64Encoder;  
/** 
 * data encrypt utls 
 * 
 * @author skyline 
 * 
 */  
public class DataEncryptUtil {  
    public static final String KEY_SHA = "SHA";  
    public static final String KEY_MD5 = "MD5";  
    /** 
     * MAC算法可选以下多种算法 
     * 
     * <pre> 
     * HmacMD5 
     * HmacSHA1 
     * HmacSHA256 
     * HmacSHA384 
     * HmacSHA512 
     * </pre> 
     */  
    public static final String KEY_MAC = "HmacMD5";  
    /** 
     * BASE64解密 
     * 
     * @param key = 需要解密的密码字符串 
     * @return 
     * @throws Exception 
     */  
    public static byte[] decryptBASE64(String key) throws Exception {  
        return (new BASE64Decoder()).decodeBuffer(key);  
    }  
    /** 
     * BASE64加密 
     * 
     * @param key = 需要加密的字符数组 
     * @return 
     * @throws Exception 
     */  
    public static String encryptBASE64(byte[] key) throws Exception {  
        return (new BASE64Encoder()).encodeBuffer(key);  
    }  
    /** 
     * MD5加密 
     * 
     * @param data = 需要加密的字符数组 
     * @return 
     * @throws Exception 
     */  
    public static byte[] encryptMD5(byte[] data) throws Exception {  
        MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);  
        md5.update(data);  
        return md5.digest();  
    }  
    /** 
     * SHA加密 
     * 
     * @param data = 需要加密的字符数组 
     * @return 
     * @throws Exception 
     */  
    public static byte[] encryptSHA(byte[] data) throws Exception {  
        MessageDigest sha = MessageDigest.getInstance(KEY_SHA);  
        sha.update(data);  
        return sha.digest();  
    }  
    /** 
     * 初始化HMAC密钥 
     * 
     * @return 
     * @throws Exception 
     */  
    public static String initMacKey() throws Exception {  
        KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);  
        SecretKey secretKey = keyGenerator.generateKey();  
        return encryptBASE64(secretKey.getEncoded());  
    }  
    /** 
     * HMAC加密 
     * 
     * @param data = 密匙加密过的字符数组 
     * @param key = 需要加密的字符串 
     * @return 
     * @throws Exception 
     */  
    public static byte[] encryptHMAC(byte[] data, String key) throws Exception {  
        SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);  
        Mac mac = Mac.getInstance(secretKey.getAlgorithm());  
        mac.init(secretKey);  
        return mac.doFinal(data);  
    }  
}  
相关文章
|
2月前
|
数据安全/隐私保护
使用加密工具类进行有效的字符串加密——CSDN博客
使用加密工具类进行有效的字符串加密——CSDN博客
|
2月前
|
数据安全/隐私保护
常用的字符串加密解密工具类
常用的字符串加密解密工具类
|
17天前
|
Java 数据安全/隐私保护
JAVA中MD5加密(MD5工具类)
JAVA中MD5加密(MD5工具类)
16 1
|
24天前
|
存储 算法 Cloud Native
C++ bcrypt算法 字符串加密,亲测有效
C++ bcrypt算法 字符串加密,亲测有效
|
5天前
|
Java 数据安全/隐私保护
AES加密工具类(java)
AES加密工具类(java)
21 0
|
2月前
|
编解码 测试技术 数据安全/隐私保护
小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密
小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密
53 2
|
2月前
|
Java 数据安全/隐私保护
6-4 字符串加密(Java解法,两种网上的类型题)
6-4 字符串加密(Java解法,两种网上的类型题)
30 0
|
9月前
|
人工智能 数据安全/隐私保护
华为机试HJ36:字符串加密
华为机试HJ36:字符串加密
|
11月前
|
数据安全/隐私保护
[虚幻引擎] UE DTBase64 插件说明 使用蓝图对字符串,字节数组或文件进行Base64加密解密
本插件可以在虚幻引擎中使用蓝图对字符串,字节数组,文件进行Base64的加密和解密。
126 0
|
12月前
|
PHP 数据安全/隐私保护
PHP函数学习:16进制ASCII转化为字符串加密解密
PHP函数学习:16进制ASCII转化为字符串加密解密
240 0