2011-06-06 87 views
0

我在写一个sqlite数据库,它将使用河豚加密邮件。但是为了有效地使用它,用户必须能够在程序启动时输入数据库的密钥。问题在于我使用随机生成的密钥来实现安全性,但这似乎使得用户无法输入密钥。有没有人有任何想法如何让用户输入密钥,同时避免强迫他们输入,例如,空字符。允许用户输入河豚加密密钥

+0

不要让他们进入一个原始密钥,而是派生密码/短语+盐键,请参阅http://stackoverflow.com/questions/372268/java-passphrase-encryption – 2011-06-06 11:50:08

回答

0

如下您可以生成密码:

SecureRandom r = new SecureRandom(); 
byte[] bytes = new byte[16]; 
r.nextBytes(bytes); 
String pwd = new BigInteger(bytes).toString(Character.MAX_RADIX); 
System.out.println(pwd); 

要转换密码回字节数组,使用:

bytes = new BigInteger(pwd, Character.MAX_RADIX).toByteArray();