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) {
} return new String(chars); } }</pre>// 取字節的高4位 chars[index++] = CH_HEX[b >>> 4 & 0xf]; // 取字節的低4位 chars[index++] = CH_HEX[b & 0xf];
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":
case "MD5":password = DigestUtils.md2Hex(sourceStr); break;
case "SHA1":password = DigestUtils.md5Hex(sourceStr); break;
case "SHA256":password = DigestUtils.sha1Hex(sourceStr); break;
case "SHA384":password = DigestUtils.sha256Hex(sourceStr); break;
case "SHA512":password = DigestUtils.sha384Hex(sourceStr); break;
} return password; } }</pre>password = DigestUtils.sha512Hex(sourceStr); break;