2011-08-04 112 views
0

我想使用Java使用一個密鑰來加密多個密碼。我可以使用密鑰生成器生成密碼,但每次都會生成不同的密鑰。 我只想要一個密鑰來進行加密。如何使用一個密鑰加密多個密碼? 另一個問題是每次我運行我的應用程序時,我總是使用相同的密鑰後,我重新啓動應用程序。如何使用一個密鑰加密多個密碼?

+1

你可以發佈你已經運行 – Martyn

+0

你能不能也請你澄清,如果你有在同一時間提供所有密碼的代碼?如果是的話,我會用tskuzzy的方法。 –

+0

是的,我在我的數據庫中有同一時間的所有密碼。 – kushal45

回答

1

如果您根據設置的密碼生成密鑰,您將得到相同的密鑰(如果所有其他密鑰相關的參數都相同)。如果您可以編輯您的問題以提供更多關於您要使用的加密算法的信息,我可能會提供更多幫助。


編輯:好了,這裏的一些示例代碼來生成基於一個密碼鑰匙(這樣才能得到相同的密鑰每次):

// 16 characters for 128-bit AES 
private final static String PASSPHRASE="myappspassphrase" 

SecretKeySpec key = new SecretKeySpec(PASSPHRASE.getBytes("UTF-8"), "AES"); 

... 

// Initialise the cipher 
Cipher encryptCipher = Cipher.getInstance("AES"); 
encryptCipher.init(Cipher.ENCRYPT_MODE, key); 
+0

是的,你也可以用這種方式幫助我。 – kushal45

+0

感謝您的幫助,但是如果我在一個函數中寫入,它可以幫助我返回什麼? – kushal45

+0

當我使用此代碼我返回字節[]。然後我把這個字節[]轉換成字符串,它給我輸出像??然後一些bxes。請告訴e現在該做什麼。 – kushal45

1
  1. 生成密鑰k
  2. 循環通過您的密碼(撥打密碼p
  3. 使用您選擇的加密方案對每個p加密k

現在只是定義generateKey()encrypt(String password, String key)

String key = generateKey(); 
String[] encrypted = new String[passwords.length]; 

for(String password : passwords) 
    encrypted = encrypt(password, key); 
+0

你能給這裏的可執行代碼嗎?我仍然不清楚。因爲generatekey()是我認爲每次運行應用程序時都會生成。所以關鍵可能是改變。 – kushal45