2011-08-04 115 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