登录口令加解密
概述
平台中的用户密码可才用明文或密文方式存储,为了保证数据安全性平台默认采用的是密文存储的方式。同时提供了接口允许用户修改口令加密的方式。
注意:加密算法可能是单向的,所以加密后的结果不能被解密,故在原来指定了口令加密类现在需要改为其他口令加密类或不使用口令加密类时,用户口令都会初始化为用户名。
接口类
java.security.MessageDiges.EncodePWD口令加密抽象类
接口类说明
java.security.MessageDiges.EncodePWD为口令加密抽象类,用户可通过继承此抽象类重写其中的encodePWD()方法实现自定义的口令加密。
可用方法
encodePWD
语法:public String encodePWD(String pwd)
参数说明:
- pwd – 待加密的密码
功能说明:用指定方法进行口令加密
返回值: 返回加密后字符串
使用说明
在平台系统全局配置中指定口令加密类
示例
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Generator extends EncodePWD{
/*
* 32位MD5算法加密密码并添加前缀“[EncodePWD]”
*/
public String encodePWD(String pwd) {
if(pwd == null){
return null;
}
MessageDigest md = null;
String outStr = null;
try {
md = MessageDigest.getInstance("MD5");
//可以选中其他的算法如SHA
byte[] digest = md.digest(pwd.getBytes());
//返回的是byet[],要转化为String存储比较方便
outStr = "[EncodePWD]"+bytetoString(digest);
} catch (NoSuchAlgorithmException nsae) {
nsae.printStackTrace();
}
return outStr;
}
/*
* 将byte数组转换成String
*/
private static String bytetoString(byte[] digest) {
String str = "";
String tempStr = "";
for (int i = 0; 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();
}
}