Java jdbc+servlet+jsp MD5加密
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:servlet+jsp+jdbc
作者:李奕庚
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
package com.gx.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Tool {
/*public static void main(String []args){
String test="123456a";
//创建一个MD5Tool类
// MD5Tool myMd5 =new MD5Tool();
String result=MD5Tool.MD5Encrypt(test);
System.out.println (test+" 加密後的结果是:"+result);
}*/
//该方法将你输入的字符串,通过md5加密,返回一个加密後的字符串
public static String MD5Encrypt(String inStr) {
MessageDigest md = null;
String outStr = null;
try {
md = MessageDigest.getInstance("MD5"); //可以选中其他的算法如SHA
byte[] digest = md.digest(inStr.getBytes());
//返回的是byet[],要转化为String存储比较方便
outStr = bytetoString(digest);
}
catch (NoSuchAlgorithmException nsae) {
nsae.printStackTrace();
}
return outStr;
}
public static String bytetoString(byte[] digest) {
String str = "";
String tempStr = "";
for (int i = 1; i < digest.length; i++) {
tempStr = (Integer.toHexString(digest[i] & 0xff));
if (tempStr.length() == 1) {
str = str + "0" + tempStr;
}
else {
str = str + tempStr;
}
}
return str.toLowerCase();
}
}
加密的使用
md5也是一种哈希算法吧。当一个很大的文件,比如ubuntu的iso,4个G,如果下载下来后,想知道文件对不对,有没有损坏,那么这个时候怎么办呢。用一种hash方法,计算这个4G文件的hash值,值是一串128位长的字符串,这个串在你下载这个iso的时候,一般会在相关地方挂着,你能看到的。也就是说,每次他们发布一个iso的时候,会放一个md5值,再放一个iso文件。当你下载下来这个iso文件后,你担心文件有损坏或者不一样,那么你可以按照md5算法自己对你下载的iso计算出一个串,如果你计算的串和官方挂出来的字符串一致,那说明有非常非常非常非常高的可能:这个下载下来的iso没问题,非常非常非常非常非常低的概率:这个iso有问题。
因为md5计算后生成的是一个128位长的串,在很大程度上避免了两个不相同的文件得到相同的哈希值,因此现在用的很广泛。
而这种hash算法的计算过程就是不停的移位不停的与或非的,计算起来很快。当然,大部分哈希都这样。