This project has retired. For details please refer to its
Attic page.
AES xref
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juddi.samples;
18
19 import javax.crypto.Cipher;
20 import javax.crypto.KeyGenerator;
21 import javax.crypto.SecretKey;
22 import javax.crypto.spec.SecretKeySpec;
23
24
25
26
27
28
29
30 public class AES {
31
32 public static String GEN(int keysize) {
33 KeyGenerator kgen;
34 try {
35 kgen = KeyGenerator.getInstance("AES");
36 kgen.init(keysize);
37 SecretKey skey = kgen.generateKey();
38 byte[] raw = skey.getEncoded();
39 return asHex(raw);
40 } catch (Exception ex) {
41 }
42 return null;
43 }
44
45 private static String asHex(byte buf[]) {
46
47 StringBuilder strbuf = new StringBuilder(buf.length * 2);
48 int i;
49
50 for (i = 0; i < buf.length; i++) {
51 if (((int) buf[i] & 0xff) < 0x10) {
52 strbuf.append("0");
53 }
54 strbuf.append(Long.toString((int) buf[i] & 0xff, 16));
55 }
56
57 return strbuf.toString();
58 }
59
60 private static byte[] hexToBytes(String s) {
61
62 return hexToBytes(s.toCharArray());
63 }
64 private static final char[] kDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a',
65 'b', 'c', 'd', 'e', 'f'};
66
67 private static byte[] hexToBytes(char[] hex) {
68 int length = hex.length / 2;
69 byte[] raw = new byte[length];
70 for (int i = 0; i < length; i++) {
71 int high = Character.digit(hex[i * 2], 16);
72 int low = Character.digit(hex[i * 2 + 1], 16);
73 int value = (high << 4) | low;
74 if (value > 127) {
75 value -= 256;
76 }
77 raw[i] = (byte) value;
78 }
79 return raw;
80 }
81
82
83
84 public static void main(String[] args) throws Exception {
85
86 String key = GEN(128);
87 System.out.println(key);
88
89 byte[] raw = hexToBytes(key);
90 SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
91
92 Cipher cipher = Cipher.getInstance("AES");
93 cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
94 byte[] encrypted = cipher.doFinal("password".getBytes("UTF-8"));
95 String enc = (asHex(encrypted));
96 System.out.println(enc);
97
98 skeySpec = new SecretKeySpec(hexToBytes(key), "AES");
99 cipher.init(Cipher.DECRYPT_MODE, skeySpec);
100 byte[] original = cipher.doFinal(hexToBytes(enc));
101
102 System.out.println(new String(original, "UTF-8"));
103
104 }
105 }