zoukankan      html  css  js  c++  java
  • 常用的字符串加密解密工具类

             提前声明一下:此工具类忘记出处了,很抱歉,如果原创遇上了我立马上您的链接:

    加密解密的工具类DataEncryptUtil:

         

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

        


  • 相关阅读:
    分布式数据库数据一致性的原理、与技术实现方案
    分布式系统全局唯一ID简介、特点、5种生成方式
    分布式Session共享的4类技术方案,与优劣势比较
    深入理解分布式事务
    分布式事务的解决方案,以及原理、总结
    调研 | 5种分布式事务解决方案优缺点对比
    网页大文件上传支持断点上传
    WEB大文件上传支持断点上传
    http大文件上传支持断点上传
    B/S大文件上传支持断点上传
  • 原文地址:https://www.cnblogs.com/a1111/p/12816292.html
Copyright © 2011-2022 走看看