通过MD5转换实现文件名得简单加密

往往有这种需求:不想让别人清晰的看见把从网上down下来的资源名字和类型。

可以先把down下来的资源名字通过MD5转换下在保存到本地。

 

通过MessageDigest实现简单的MD5加密

MessageDigest 类的用法

MessageDigest

 

MD5 是 消息摘要算法,就像 hashCode 一样,在计算的过程中会丢弃很多的原始数据,MD5 是无法还原为原文的,就像字符串的 hashCode 并不能还原为字符串一样。

如果密文长度是固定的加密算法,基本上都可以认定为是消息摘要算法,是不能还原原文的。消息摘要一般只是用于 验证原文的有效性看看是否被撰改过
 
一般使用MD5进行检验时, 往往是将传来的明文数据再次MD5加密,然后和存储在数据库中的MD5内容进行比对,以进行正确性判断。
 
MD5 其实不是加密, 是HASH. HASH 原理就是产生 1对1不可逆的。
 
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public final class MD5Util {

	private static final char HEX_DIGITS[] = { '0', '1', '2', '3', '4', '5',
			'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

	public static String md5(String s) {
		
		try {
			// 使用MD5创建MessageDigest对象
			MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
			
			digest.update(s.getBytes());
			
			byte messageDigest[] = digest.digest();

			return toHexString(messageDigest);
			
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return s;
	}

	private static String toHexString(byte[] b) {
		
		StringBuilder sb = new StringBuilder(b.length * 2);
		
		for (int i = 0; i < b.length; i++) {
			
			sb.append(HEX_DIGITS[(b[i] & 0xf0) >>> 4]);
			sb.append(HEX_DIGITS[b[i] & 0x0f]);			
		}
		
		return sb.toString();
	}
}

你可能感兴趣的:(通过MD5转换实现文件名得简单加密)