用户登录注册功能做密码加密时只需调用SHA()方法,注册用户时密码加密存入数据库,登录时把前端密码加密与数据库中密码作对比即可
/**
* 传入文本内容,返回 SHA-512 串
*
* @param strText
* @return
*/
public String SHA512(final String strText) {
return SHA(strText, "SHA-512");
}
/**
* 字符串 SHA 加密
* @param strText 字符数据
* @param strType 加密格式
* @return 加密结果
*/
private String SHA(final String strText, final String strType) {
// 返回值
String strResult = null;
// 是否是有效字符串
if (strText != null && strText.length() > 0) {
try {
// SHA 加密开始
// 创建加密对象 并传入加密类型
MessageDigest messageDigest = MessageDigest
.getInstance(strType);
// 传入要加密的字符串
messageDigest.update(strText.getBytes());
// 得到 byte 类型结果
byte byteBuffer[] = messageDigest.digest();
// 将 byte 转换为 string
StringBuffer strHexString = new StringBuffer();
// 遍历 byte buffer
for (int i = 0; i < byteBuffer.length; i++) {
String hex = Integer.toHexString(0xff & byteBuffer[i]);
if (hex.length() == 1) {
strHexString.append('0');
}
strHexString.append(hex);
}
// 得到返回結果
strResult = strHexString.toString();
} catch (NoSuchAlgorithmException e) {
logger.error("-01-字符串 SHA 加密异常-"+e.getMessage());
e.printStackTrace();
}
}
return strResult;
}
/**
* 判断用户密码是否正确
*
* @param newpasswd 用户输入的密码
* @param oldpasswd 数据库中存储的密码--用户密码的摘要
* @return 用户密码是否正确
* @throws NoSuchAlgorithmException
* @throws UnsupportedEncodingException
*/
public boolean checkpassword(String newpasswd, String oldpasswd)
throws NoSuchAlgorithmException, UnsupportedEncodingException {
if (SHA512(newpasswd).equals(oldpasswd)) {
return true;
} else {
return false;
}
}