My favorites | Sign in
Project Home Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package eu.jakubiak.generators;

import java.util.Random;

/**
* Klasa odpowiedzialna za generowania kluczy
* zakodowana przy uzyciu alfabetu (małe i duże litery)
* oraz cyfry
*
*/
public class KeyGenerator implements IGenerator {

/**
* Utworznie statystycznie unikalnego klucza
* Klucz to bardzo duża liczba - większa od MD5 2^128
* zakodowana przy użyciu alfabetu oraz cyfr - 62znaki.
* Dzięki użyciu wielu znaków klucz jest krótszy niż
* md5 zakodwoana 16.
*
* md5 zakodowana hex potrzebuje 32 znaków,
* w kluczach kodowanych alfabetem wystarczą 22 znaki.
* Niby nie dużo, jednak jest jeszcze jedna zalata
* - sortowanie i indeksowanie w bazie danych.
*
* http://www.wolframalpha.com/input/?i=(26+%2B+26+%2B+10)^22+>+2^128
*/
public String generate() {
return generate(22);
}


/**
* Utworzenie klucza o zadanej długości
*
* @param length
* długość hasła
* @return
*/
public String generate(int length) {
Random r = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
sb.append(CHARS[r.nextInt(CHARS.length)]);
}
return sb.toString();
}

/**
* Zbiór znaków do kodowania klucza
* 26 małych liter alfabetu + 26 dużych liter + 10 cyfr
* to daje 62 znaki
*/
public static final char[] CHARS = {
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'0','1','2','3','4','5','6','7','8','9',
};

}

Change log

r6 by antoni.jakubiak on Oct 18, 2009   Diff
Błąd w komentarzu, jestem pewny że gdzieś
przeczytałem tą głupotę że MD5 jest
większe od liczby atomów we wszechświecie
- uwierzyłem w nią - a przecież to
oczywista nieprawda - wystarczy wpisać w
kalkulatorek.
Go to: 
Project members, sign in to write a code review

Older revisions

r3 by antoni.jakubiak on Jun 27, 2009   Diff
[No log message]
All revisions of this file

File info

Size: 1676 bytes, 59 lines
Powered by Google Project Hosting