1、MD5(信息摘要算法) 和 SHA(安全散列算法)是两种常用的加密算法;
2、java实现加密过程:
创建一个加密工具类为例:
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;
//加密类(encrypt:加密)
public class EncryptUtil {
//通过MD5算法加密,参数传进一个字符串,对该字符串进行加密
public static String encryptByMd5(String instr) {
MessageDigest md; //定义一个MessageDigest类对象,该类提供处理业务方法
String outstr = instr; //定义一个字符串,用于存放加密后的字符串
try {
md = MessageDigest.getInstance("MD5"); //确定计算方法
BASE64Encoder base64en = new BASE64Encoder(); // JDK中提供了BASE64Encoder和BASE64Decoder,用它们可以非常方便的完成基于BASE64的编码和解码。
outstr = base64en.encode(md.digest(str.getBytes("UTF-8"))); // 加密
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return outstr;
}
////通过SHA算法加密,参数传进一个字符串,对该字符串进行加密
public static String encryptByMd5(String instr) {
MessageDigest md; //定义一个MessageDigest类对象,该类提供处理业务方法
String outstr = instr; //定义一个字符串,用于存放加密后的字符串
try {
md = MessageDigest.getInstance("SHA-1"); //确定计算方法
BASE64Encoder base64en = new BASE64Encoder(); // JDK中提供了BASE64Encoder和BASE64Decoder,用它们可以非常方便的完成基于BASE64的编码和解码。
outstr = base64en.encode(md.digest(str.getBytes("UTF-8"))); // 加密
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return outstr;
}
}
MessageDigest类为提供摘要算法的功能,信息摘要是安全的单向哈希函数,接收任意大小的数据,并输出固定长度的哈希值;
MessageDigest类有如下方法:
(1)public static MessageDigest getInstance(String algorithm)throws NoSuchAlgorithmException
——返回实现指定算法的对象,algorithm为请求算法的名称,如MD5,SHA-1;
(2)public void update(byte[] input)
—— 使用指定的byte数组更新摘要;
(3)public byte[] digest()
——通过执行填充等操作完成哈希计算,调用此方法后,摘要被重置,因此该方法只能被调用一次;
(4)public static boolean isEqual(byte[] digesta,byte[]gigestb)
——比较两个摘要的相等性,做简单的字节比较。
连接:http://www.ibm.com/developerworks/cn/java/l-security/
http://wenku.baidu.com/view/a4b709c308a1284ac8504360.html