您的位置:首页 > 编程语言 > Java开发

java加密解密工具类

2017-04-19 15:46 363 查看
[java] view
plain copy

package com.xy6.moneykeeper.syn;  

  

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);  

  

    }  

  

}  



用法:

加密:

str2 = DataEncryptUtil.encryptBASE64(str1.getBytes());

解密:

str1 = new String(DataEncryptUtil.decryptBASE64(str2));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: