import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* Java常用的对密码加密的方法
* 对摘要信息进行加密编码
* @author zhangmf
* @version v1.0
*/
public class CodeUtil {
private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
/**
* 将字节数组转换为16进制的字符串
* @param byteArray 字节数组
* @return 16进制的字符串
*/
private static String byteArrayToHexString(byte[] byteArray){
StringBuffer sb = new StringBuffer();
for(byte byt:byteArray){
sb.append(byteToHexString(byt));
}
return sb.toString();
}
/**
* 将字节转换为16进制字符串
* @param byt 字节
* @return 16进制字符串
*/
private static String byteToHexString(byte byt) {
int n = byt;
if (n < 0)
n = 256 + n;
return hexDigits[n/16] + hexDigits[n%16];
}
/**
* 将摘要信息转换为相应的编码
* @param code 编码类型
* @param message 摘要信息
* @return 相应的编码字符串
*/
private static String Encode(String code,String message){
MessageDigest md;
String encode = null;
try {
md = MessageDigest.getInstance(code);
encode = byteArrayToHexString(md.digest(message
.getBytes()));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return encode;
}
/**
* 将摘要信息转换成MD5编码
* @param message 摘要信息
* @return MD5编码之后的字符串
*/
public String md5Encode(String message){
return Encode("MD5",message);
}
/**
* 将摘要信息转换成SHA编码
* @param message 摘要信息
* @return SHA编码之后的字符串
*/
public String shaEncode(String message){
return Encode("SHA",message);
}
/**
* 将摘要信息转换成SHA-256编码
* @param message 摘要信息
* @return SHA-256编码之后的字符串
*/
private static String sha256Encode(String message){
return Encode("SHA-256",message);
}
/**
* 将摘要信息转换成SHA-512编码
* @param message 摘要信息
* @return SHA-512编码之后的字符串
*/
private static String sha512Encode(String message){
return Encode("SHA-512",message);
}
public static String icpSHA512Encode(String username,String password) {
String encodeusername=sha512Encode(username);
String union=encodeusername+"_"+password;
return sha512Encode(union);
}
public static String icpSHA256Encode(String username,String password) {
String encodeusername=sha256Encode(username);
String union=encodeusername+"_"+password;
return sha256Encode(union);
}
public static void main(String[] args) {
System.out.println(CodeUtil.icpSHA256Encode("xxx@qq.com", "111111"));
System.out.println(CodeUtil.icpSHA256Encode("xxx@qq.com", "111111"));
System.out.println(CodeUtil.icpSHA256Encode("xxx@qq.com", "222222"));
System.out.println(CodeUtil.icpSHA256Encode("zzz@zz.com", "111111"));
System.out.println(CodeUtil.icpSHA256Encode("zzz@zz.com", "111111"));
System.out.println(CodeUtil.icpSHA256Encode("zzz@zz.com", "222222"));
}
}