Java加密工具類

dd2d 9年前發布 | 3K 次閱讀 Java

依賴:org.apache.commons.codec.digest.DigestUtils
支持MD5,SHA-1,SHA-256
Apache下載地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**

  • CiphertextUtil *
  • @author ysj */ public class CiphertextUtil { public static final String MD5 = "MD5"; public static final String SHA_1 = "SHA-1"; public static final String SHA_256 = "SHA-256"; private static final char[] CH_HEX = {'0', '1', '2', '3', '4', '5', '6', '7', '8',

     '9', 'A', 'B', 'C', 'D', 'E', 'F'};
    
    

    /**

    • 加密字符串 *
    • @param sourceStr 需要加密目標字符串
    • @param algorithmsName 算法名稱(如:MD5,SHA-1,SHA-256)
    • @return */ public static String passAlgorithmsCiphering(String sourceStr,String algorithmsName){ String password = ""; MessageDigest md; try {

       md = MessageDigest.getInstance(algorithmsName);
       // 使用指定byte[]更新摘要
       md.update(sourceStr.getBytes());
       // 完成計算,返回結果數組
       byte[] b = md.digest();
       password = byteArrayToHex(b);
      

      } catch (NoSuchAlgorithmException e) {

       e.printStackTrace();
      

      } return password; }

      /**

    • 將字節數組轉為十六進制字符串 *
    • @param bytes
    • @return 返回16進制字符串 / private static String byteArrayToHex(byte[] bytes) { // 一個字節占8位,一個十六進制字符占4位;十六進制字符數組的長度為字節數組長度的兩倍 char[] chars = new char[bytes.length 2]; int index = 0; for (byte b : bytes) {
       // 取字節的高4位
       chars[index++] = CH_HEX[b >>> 4 & 0xf];
       // 取字節的低4位
       chars[index++] = CH_HEX[b & 0xf];
      
      } return new String(chars); } }</pre>
      import org.apache.commons.codec.digest.DigestUtils;

/**

  • CiphertextUtil *
  • @author ysj */ public class CiphertextUtil { public static final String MD2 = "MD2"; public static final String MD5 = "MD5"; public static final String SHA_1 = "SHA1"; public static final String SHA_256 = "SHA256"; public static final String SHA_384 = "SHA384"; public static final String SHA_512 = "SHA512";

    /**

    • 加密字符串 *
    • @param sourceStr 需要加密目標字符串
    • @param algorithmsName 算法名稱(如:MD2,MD5,SHA1,SHA256,SHA384,SHA512)
    • @return */ public static String passAlgorithmsCiphering(String sourceStr,String algorithmsName){ String password = ""; switch(algorithmsName){ case "MD2":
       password = DigestUtils.md2Hex(sourceStr);
       break;
      
      case "MD5":
       password = DigestUtils.md5Hex(sourceStr);
       break;
      
      case "SHA1":
       password = DigestUtils.sha1Hex(sourceStr);
       break;
      
      case "SHA256":
       password = DigestUtils.sha256Hex(sourceStr);
       break;
      
      case "SHA384":
       password = DigestUtils.sha384Hex(sourceStr);
       break;
      
      case "SHA512":
       password = DigestUtils.sha512Hex(sourceStr);
       break;
      
      } return password; } }</pre>
 本文由用戶 dd2d 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!