2017-04-01 235 views
2

在我的Java Web應用程序中,管理員帳戶將使用StandardPasswordEncoder類創建用戶帳戶,其中密碼將被加密,這很容易。但是,如何加密管理密碼,我已經存儲在MySQL數據庫中?如何加密管理員密碼?

+0

爲什麼你不用加密的密碼編輯你的管理員密碼? –

+0

你的意思是直接在mysql中編輯?但在我的Java控制器類的密碼編碼器.. – Shahril

+0

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

回答

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控制器類中的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你可以像管理員一樣標記你的密碼,例如你可以在你的表中添加一個列來區分管理員和普通用戶,在這種情況下你認爲你有一個大企業,一個管理員帳戶是不夠的,你需要許多管理員帳戶,並在此欄的基礎上,您可以使用算法加密管理員帳戶,使用其他算法加密管理員帳戶,您可以獲得想法 –