Md5 加密方式 对字符串进行加密
public class Md5Utils {
private static String EncoderByMd5(String str) {
try {
//
生成实现指定摘要算法的 MessageDigest 对象。
MessageDigest md = MessageDigest.getInstance("MD5");
// 先将字符串转换成字节数组,然后
使用字节数组更新摘要
md.update(str.getBytes());
//
通过执行诸如填充之类的最终操作完成哈希计算。
byte[] encryContext = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
//
for (int offset = 0; offset < encryContext.length; offset++) {
i = encryContext[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i)); //16进制的加密方式
}
return buf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//两次调用加密方法对字符串进行加密
//如果为了防止被反编译破解,可以对第一次的MD5加密码进行截取,然后再加密截取的部分。
public static String getMd5Str(String str) {
return EncoderByMd5(EncoderByMd5(str));
}
}
注意:
1、
java.security.
MessageDigest
类用于为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。
简单点说就是用于生成
散列码。
信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。
2、
MessageDigest 通过其getInstance系列静态函数来进行实例化和初始化。
MessageDigest 对象通过使用 update
方法处理数据。
任何时候都可以调用 reset
方法重置摘要。一旦所有需要更新的数据都已经被更新了,
应该调用 digest
方法之一完成哈希计算并返回结果。
3、
对于给定数量的更新数据,digest
方法只能被调用一次。
digest
方法被调用后,MessageDigest 对象被重新设置成其初始状态。
4、
java.security.MessageDigest类的网址
http://hubingforever.blog.163.com/blog/static/171040579201210781650340/