如何加密管理员密码?

如何加密管理员密码?

问题描述:

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

+0

为什么你不用加密的密码编辑你的管理员密码? –

+0

你的意思是直接在mysql中编辑?但在我的Java控制器类的密码编码器.. – Shahril

+0

什么算法你使用MD5 AES或你的Java控制器? –

如何加密管理密码,我已经存储在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控制器类中的admin进行加密。

您可以标记您的密码就像一个主管理,例如,你可以添加在你的表中的列,使管理员和普通用户之间的差异,考虑你在这种情况下,大企业一个管理员帐户是不足够了,您需要许多管理员帐户,并且在此专栏的基础上,您可以使用算法加密管理员帐户,使用其他算法加密其他帐户。使用SHA-256

我设法加密管理员密码,但我不能登录到我的web应用程序 堂妹在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算法。

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

+0

如果我只想仅加密管理员密码,该怎么办?其他用户的密码将由管理员在java控制器类中加密。 – Shahril

+0

如果你有一个列你可以指定用户权限为admin,你可以做 UPDATE table_name SET pass = MD5(pass)WHERE previlage =“admin”; –

+2

@Shahril你可以像管理员一样标记你的密码,例如你可以在你的表中添加一个列来区分管理员和普通用户,在这种情况下你认为你有一个大企业,一个管理员帐户是不够的,你需要许多管理员帐户,并在此栏的基础上,您可以使用算法加密管理员帐户,使用其他算法加密管理员帐户,您可以获得想法 –