2017-05-17 91 views
-1

我有一個函數加密和解密密碼的加密和解密。當我將密碼發送到數據庫時,我會對其進行加密併發送,但要使用它,我先將其解密並將其發送到那裏。 但我不想讓任何人使用System.out.println在控制檯上打印密碼。 它應該以某種方式鎖定。 我們可以爲此做些什麼?我已經用java編碼並使用Key編寫我的代碼。 我的代碼是如果我有密碼加密和解密功能,有沒有什麼辦法可以在我們的java代碼中打印解密後的密碼?

String text = "Hello World"; 
String key = "Bar12345Bar12345"; // 128 bit key 
// Create key and cipher 
Key aesKey = new SecretKeySpec(key.getBytes(), "AES"); 
Cipher cipher = Cipher.getInstance("AES"); 
// encrypt the text 
cipher.init(Cipher.ENCRYPT_MODE, aesKey); 
byte[] encrypted = cipher.doFinal(text.getBytes()); 
System.err.println(new String(encrypted)); 
// decrypt the text 
cipher.init(Cipher.DECRYPT_MODE, aesKey); String decrypted = new String(cipher.doFinal(encrypted)); 
System.err.println(decrypted); 
+0

第一件事不使用字符串的密碼。使用char []。 – Amit1011

+1

從不安全的選項加密和解密密碼。你應該改爲散列函數。 –

+0

@RamanSahasi不錯的主意,但只有當你使用密碼*驗證*用戶輸入的內容纔有效。如果您使用密碼對其他服務進行身份驗證,則需要將其重建爲原始密碼。 –

回答

1

這裏是一個可能的解決您的問題。

從不加密/解密密碼,這是一個可能的安全漏洞。 使用散列函數對字符串進行密碼散列,這些散列通常存儲在數據庫中,密碼驗證通常通過將散列密碼與數據庫中的散列密碼進行比較來完成。

因此,除了有效的密碼持有者之外,任何人都不可能知道真實的密碼。