如何加密管理员密码?

时间:2017-04-01 09:16:38

标签: java mysql spring

在我的java网络应用程序中,管理员帐户将使用StandardPasswordEncoder类创建用户帐户,密码将被加密,这很容易。但是如何加密我已经存储在MySQL数据库中的管理员密码?

1 个答案:

答案 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控制器类中加密。

您可以像管理员一样标记您的密码,例如您可以在表格中添加一个用于区分管理员和普通用户的列,考虑您有一个大型企业,在这种情况下,一个管理员帐户是不够的,您需要很多管理员帐户,在此列的基础上,您可以使用算法加密管理员帐户,使用其他算法加密其他帐户。

使用SHA-256

加密密码
  

我设法加密管理员密码,但我无法登录我的网站   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算法。

希望这可以给你一个想法。