1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.fhw.cabaweb.tools;
21
22 import java.util.Calendar;
23 import java.util.Date;
24 import java.util.Random;
25
26 /***
27 * Klasse um verschiedene mit Passworten zusammenhängende Funktionen zusammenzufassen
28 *
29 * @author <a href="mailto:thomas.vogt@tvc-software.com">Thomas Vogt</a>
30 * @version Version 1.0 10.03.2004
31 */
32 public final class Password
33 {
34 /***
35 * Standardkonstruktor der nicht zugänglich sein soll, da dies eine Utility Klasse ist
36 */
37 protected Password()
38 {
39 throw new UnsupportedOperationException();
40 }
41
42 /***
43 * Erzeugt ein Passwort im Raum [a-zA-Z0-9] von der übergebenen Länge
44 *
45 * @param laenge Länge die das erzeugte Passwort haben soll
46 * @return Der Passwort String
47 */
48 public static final String passwortGenerator(final int laenge)
49 {
50 String rueckgabewert = new String();
51
52 String[] possible = { "a", "A", "b", "B", "c", "C", "d", "D", "e", "E", "f", "F", "g", "G", "h", "H", "i", "I", "j", "J", "k", "K", "l", "L", "m", "M", "n", "N", "o", "O", "p", "P", "q", "Q", "r", "R", "s", "S", "t", "T", "u", "U", "v", "V", "w", "W", "x", "X", "y", "Y", "z", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" };
53
54 int random_in = possible.length - 1;
55
56
57 try
58 {
59 Thread.sleep(10);
60 }
61 catch (InterruptedException e)
62 {
63 ;
64 }
65
66 Date timestamp = new Date();
67 Calendar calendar = Calendar.getInstance();
68 calendar.setTime(timestamp);
69 Random randomizer = new Random(calendar.getTimeInMillis());
70
71 for (int count = 0; count < laenge; count++)
72 {
73 rueckgabewert = rueckgabewert.concat(possible[randomizer.nextInt(random_in)]);
74 }
75
76 return rueckgabewert;
77 }
78
79 /***
80 * Generiert aus dem übergebenen String einen MD5 Hash
81 *
82 * @param input Der String aus dem ein MD5 Hash erzeugt werden soll
83 * @return Der MD5 Hash
84 */
85 public static final String generateMD5(final String input)
86 {
87 MD5 md = new MD5();
88 byte[] out = new byte[16];
89 int len = 0;
90
91 if (input == null)
92 {
93 try
94 {
95 len = 0;
96 md.update(null, 0);
97 }
98 catch (Exception ex)
99 {
100 ;
101
102 }
103 }
104 else
105 {
106 try
107 {
108 len = input.length();
109 md.update(input.getBytes(), len);
110 }
111 catch (Exception ex)
112 {
113 ;
114
115 }
116 }
117 md.md5final(out);
118
119 return md.dumpBytes(out);
120 }
121
122 /***
123 * Vergleich von 2 MD5 Hashes
124 *
125 * @param hash1 Der String mit dem ersten MD5 Hash
126 * @param hash2 Der String mit dem zweiten MD5 Hash
127 * @return Boolean - true wenn beide Hashes gleich sind, ansonsten Boolean - false
128 */
129 public static final Boolean compareMD5Hashes(final String hash1, final String hash2)
130 {
131 if (hash1.compareTo(hash2) == 0)
132 {
133 return new Boolean(true);
134 }
135 else
136 {
137 return new Boolean(false);
138 }
139 }
140
141 /***
142 * Vergleich des übergebenen MD5 Hashes mit dem MD5 Hash der aus dem im Klartext übergebenen String erzeugt wurde
143 *
144 * @param hash Der String mit dem MD5 Hash
145 * @param input Der String aus dem ein MD5 Hash erzeugt werden soll
146 * @return Boolean - true wenn Hash und aus dem String erzeugter Hash gleich sind, ansonsten Boolean - false
147 */
148 public static final Boolean compareMD5HashToString(final String hash, final String input)
149 {
150 if (hash.compareTo(generateMD5(input)) == 0)
151 {
152 return new Boolean(true);
153 }
154 else
155 {
156 return new Boolean(false);
157 }
158 }
159 }