在我的java网络应用程序中,管理员帐户将使用StandardPasswordEncoder
类创建用户帐户,密码将被加密,这很容易。但是如何加密我已经存储在MySQL
数据库中的管理员密码?
答案 0 :(得分:2)
如何加密我已存储在mysql中的管理员密码 数据库?
您可以修改密码:
UPDATE table_name SET pass = MD5(pass);
-- --------------------------^^^-------
-- This can be any Standard encryption algorithm, you can check the link above
您可以查看Encryption and Compression Functions
如果我只想加密管理员密码怎么办?其他用户 密码将由管理员在java控制器类中加密。
您可以像管理员一样标记您的密码,例如您可以在表格中添加一个用于区分管理员和普通用户的列,考虑您有一个大型企业,在这种情况下,一个管理员帐户是不够的,您需要很多管理员帐户,在此列的基础上,您可以使用算法加密管理员帐户,使用其他算法加密其他帐户。
我设法加密管理员密码,但我无法登录我的网站 app coz Web应用程序中的StandardPasswordEncoder类正在使用 SHA-256哈希算法
SHA-256!= MD5 ,这很明显,所以你必须在双方代码和数据库中使用相同的algothm,在你使用SHA-256
的情况下,我假设你正在使用这样的函数:
<强> CODE 强>
public static String sha256(String base) {
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(base.getBytes("UTF-8"));
StringBuilder hexString = new StringBuilder();
for (int i = 0; i < hash.length; i++) {
String hex = Integer.toHexString(0xff & hash[i]);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
} catch (UnsupportedEncodingException | NoSuchAlgorithmException ex) {
throw new RuntimeException(ex);
}
}
这会像这样加密管理员:
admin = 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
<强> DATABASE 强>
因此,在您的数据库中,您必须加密密码,如下所示:
SELECT SHA2('admin', 256);
更新查询应如下所示:
UPDATE table_name SET pass = SHA2(pass, 256) WHERE admin_master = true;
-- -------------Field to check if it is admin or not ---^
因此,当您尝试登录时,您必须检查它是否是管理员,如果管理员使用SHA-256加密您的密码并检查用户是否存在,否则如果该用户是ordanary用户,请检查您的previouse算法。
希望这可以给你一个想法。