1. 程式人生 > >java 自帶的MD5、SHA1演算法演示

java 自帶的MD5、SHA1演算法演示

java程式碼:EncoderHandler.java

package michael.utils;

import java.security.MessageDigest;

/**
 * blog www.micmiu.com
 *
 * @author Michael
 *
 */
public class EncoderHandler {

    private static final String ALGORITHM = "MD5";

    private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5'
, '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; /** * encode string * * @param algorithm * @param str * @return String */ public static String encode(String algorithm, String str) { if (str == null) { return null; } try
{ MessageDigest messageDigest = MessageDigest.getInstance(algorithm); messageDigest.update(str.getBytes()); return getFormattedText(messageDigest.digest()); } catch (Exception e) { throw new RuntimeException(e); } } /** * encode By MD5 * * @param
str * @return String */
public static String encodeByMD5(String str) { if (str == null) { return null; } try { MessageDigest messageDigest = MessageDigest.getInstance(ALGORITHM); messageDigest.update(str.getBytes()); return getFormattedText(messageDigest.digest()); } catch (Exception e) { throw new RuntimeException(e); } } /** * Takes the raw bytes from the digest and formats them correct. * * @param bytes * the raw bytes from the digest. * @return the formatted bytes. */ private static String getFormattedText(byte[] bytes) { int len = bytes.length; StringBuilder buf = new StringBuilder(len * 2); // 把密文轉換成十六進位制的字串形式 for (int j = 0; j < len; j++) { buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]); buf.append(HEX_DIGITS[bytes[j] & 0x0f]); } return buf.toString(); } public static void main(String[] args) { System.out.println("111111 MD5 :" + EncoderHandler.encodeByMD5("111111")); System.out.println("111111 MD5 :" + EncoderHandler.encode("MD5", "111111")); System.out.println("111111 SHA1 :" + EncoderHandler.encode("SHA1", "111111")); } }

執行結果如下:

111111 MD5  :96e79218965eb72c92a549dd5a330112
111111 MD5  :96e79218965eb72c92a549dd5a330112
111111 SHA1 :3d4f2bf07dc1be38b20cd6e46949a1071f9d0e3d