欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MD5 JAVA

程序员文章站 2022-04-02 16:33:25
...
别人的代码



import java.security.MessageDigest;

public class Encrypt {

	/**
	 * MD5 . 发生错误则返回空字符串<br/>
	 * 处理后的值有 32 位<br/>
	 * 
	 * @param str
	 * @param runTime
	 *            : 运行次数, 1 到 10 之间, 默认为 2 次. 可以从架构全局配置文件中读
	 */
	public static String toMD5(String str, int runTime) {
		runTime = (runTime < 0 || runTime > 10) ? 2 : runTime;
		String param = encryption(str, "MD5");
		return (runTime > 1) ? toMD5(param, --runTime) : param;
	}

	/**
	 * SHA . 发生错误则返回空字符串<br/>
	 * 处理后的值有 40 位
	 * 
	 * @param str
	 * @param runTime
	 *            : 运行次数, 1 到 10 之间, 默认为 2 次. 可以从架构全局配置文件中读
	 */
	public static String toSHA(String str, int runTime) {
		runTime = (runTime < 0 || runTime > 10) ? 2 : runTime;
		// 或 SHA 都可以
		String param = encryption(str, "SHA-1");
		return runTime > 1 ? toSHA(param, --runTime) : param;
	}

	/**
	 * encrypt
	 * 
	 * @param str
	 * @param algorithm
	 *            : 支持 MD5 或 SHA 两种
	 * @return String
	 */
	private static String encryption(String str, String algorithm) {
		try {
			MessageDigest message = MessageDigest.getInstance(algorithm);
			message.reset();
			message.update(str.getBytes("utf-8"));
			byte[] md = message.digest();

			StringBuffer sbd = new StringBuffer();
			for (int i = 0; i < md.length; i++) {
				String temp = Integer.toHexString(0xFF & md[i]);
				if (temp.length() == 1)
					sbd.append("0");
				sbd.append(temp);
			}
			return sbd.toString();
		} catch (Exception e) {
			return "";
		}
	}

	public static void main(String[] args) {
		System.out.println(toMD5("good", 1));
	}

}