Sunday, March 25, 2007

Diceware Passphrase

Источник

Diceware Passphrase - это предельно простой алгоритм генерации
паролей. Насколько длинных - настолько простых к запоминанию.
Алгоритм строится на принципе "кидания 5 игральных костей N раз" и
определнию комбинаций из цифр с последующим сопоставлением этих цифр определенным словам.
По ссылке, указаной выше можно скачать такой файл соответствия.
Выглядит он следующим образом:
11126 abase
11131 abash
11132 abate

Принцип следующий:
Кидаем 5 костей первый раз, записываем получившееся 5-значное число.
Кидаем второй раз - опять записываем.
И так подряд столько раз, сколько необходимо.
Затем по файлу определяем слова соответствующие цифрам и производим конкатенацию.
В общем-то - это и есть весь алгоритм. Даже алгоритмом можно назвать
с достаточно сильной натяжкой.
Код (исключительно ознакомительный, как пример):

public class Diceware {

private SecureRandom secureRandom = new SecureRandom();
private Map wordlist = new HashMap();

public Diceware(String wordslistPath) throws IOException {
File file = new File(wordslistPath);
InputStream is = new FileInputStream(file);
Reader reader = new InputStreamReader(is);
BufferedReader bufferedReader = new BufferedReader(reader);

String pair[];
String line;
while ((line = bufferedReader.readLine()) != null) {
pair = line.split(",");
wordlist.put(pair[0], pair[1]);
}
bufferedReader.close();
reader.close();
is.close();
}

public String getPassphrase(int rolls) {
String passphrase = "";
String tmp = "";
for (int i = 0; i < rolls; i++) {
for (int j = 0; j < 5; j++) {
tmp += secureRandom.nextInt(6) + 1;
}
passphrase += wordlist.get(tmp);
tmp = "";
}
return passphrase;
}
}

PS: вопрос на засыпку: как можно лаконично перевести на русский слово passphrase в данном контексте:
"A passphrase is a bunch of words and characters that you type in to your computer to let it know for sure that the person typing is you. Most newer security programs allow you to enter a passphrase instead of just a short password for added protection against attackers."

0 комментария(ев):