Разрешение пользователям вводить ключи для шифрования Blowfish

Я пишу базу данных sqlite, которая будет шифровать сообщения с помощью blowfish. Однако для эффективного использования пользователь должен иметь возможность ввести ключ для базы данных при запуске программы. Проблема заключается в том, что я использую случайно сгенерированный ключ для обеспечения безопасности, но это, похоже, делает невозможным ввод ключа пользователем. Есть ли у кого-нибудь идеи, как позволить пользователю вводить ключ, не заставляя их вводить, например, нулевой символ.


person Daniel Gratzer    schedule 06.06.2011    source источник
comment
Не заставляйте их вводить необработанный ключ, вместо этого получайте ключ из пароля/фразы+соли, см. stackoverflow.com/questions/372268/java-passphrase-encryption   -  person Alex K.    schedule 06.06.2011


Ответы (1)


Вы можете сгенерировать пароль следующим образом:

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();
person Thomas Mueller    schedule 06.06.2011