在系统中经常出现要存储一些用户信息,例如登录名和密码等。出于安全考虑,有些信息需要采用某些算法加密之后再进行
存储。目前广泛使用的算法有MD5和SHA-1等。
Hash算法主要用于信息安全领域中加密,它可以把一些不同长度的信息转化成固定长度的128位编码。MD5和SHA-1是目前
应用最为广泛的Hash算法,主要应用文件校验、数字签名和鉴权协议等领域。MD5和SHA属于非对称性加密算法,一般被认为
是不可逆的。
Java在实现MD5和SHA-1算法加密时,主要使用了java.security.MessageDigest类。MessageDigest类为应用程序提供信息
摘要算法的功能,例如MD5或SHA算法。信息摘要是安全的单项散列函数,它接收任意大小的数据,输出固定长度的散列值。
实现MD5和SHA加密的示例代码如下:
package day0105;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5AndSHA {
/**
* @param str:要加密的字符串信息
* @param digestType:加密类型,选择MD5或SHA-1
* @return:加密后的内容
*/
public String digestString(String str,String digestType){
MessageDigest md;
String message = "";
try{
md = MessageDigest.getInstance(digestType);
md.update(str.getBytes());
message = byteToHex(md.digest());
}catch(NoSuchAlgorithmException e){
e.printStackTrace();
}
return message;
}
/**
* 将字节数组变成十六进制的字符串
* @param bytes:字节数组
* @return:十六进制的字符串
*/
private String byteToHex(byte[] bytes){
StringBuffer sb = new StringBuffer();
for(int i =0;i
加密功能使用的非常普遍,可以提高信息的安全性,加密算法也有很多,比较常用的有MD5和SHA-1。在Java中通过
java.security.MessageDigest类可以实现MD5和SHA-1加密算法。