在现在的信息交流的时代中,我们的信息安全是很重要的,所以我们需要对网络上的信息的传递来加密。
package com.demo.test1;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* 加密类
*
*/
public class MD5 {
//加的盐
private static final String SALT = "HXWcjvQWVG1wI4FQBLZpQ3pWj48AV63d";
public static String EncoderByMd5(String buf) {
try {
MessageDigest digist = MessageDigest.getInstance("MD5");
byte[] rs = digist.digest(buf.getBytes());
StringBuffer digestHexStr = new StringBuffer();
for (int i = 0; i < 16; i++) {
digestHexStr.append(byteHEX(rs[i]));
}
return digestHexStr.toString();
} catch (NoSuchAlgorithmException e) {
System.out.println("出现错误");
}
return null;
}
public static void main(String args[])
{
System.out.println(MD5.encodeByMd5AndSalt("passsdfsword"));
}
/**
* 加盐的md5值。这样即使被拖库,仍然可以有效抵御彩虹表攻击
* @param inbuf 需做md5的字符串
* @return
*
*/
public static String encodeByMd5AndSalt(String inbuf)
{
return EncoderByMd5(EncoderByMd5(inbuf)+SALT);
}
public static String byteHEX(byte ib) {
char[] Digit = { '0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F' };
char [] ob = new char[2];
ob[0] = Digit[(ib >>> 4) & 0X0F];
ob[1] = Digit[ib & 0X0F];
String s = new String(ob);
return s;
}
}