· 7 years ago · Mar 27, 2018, 08:00 AM
1import javax.crypto.KeyGenerator;
2import javax.crypto.SecretKey;
3import java.math.BigInteger;
4import java.security.SecureRandom;
5import java.util.Random;
6
7public class Symkey {
8
9 public static byte[] generateSymmetricKey() throws Exception
10 {
11
12 Random r = new Random();
13 int num = r.nextInt(10000);
14 String knum = String.valueOf(num);
15 byte[] knumb = knum.getBytes();
16 byte[] skey=getRawKey(knumb);
17
18 // String skeyString = new String(skey);
19
20 //System.out.println("Blowfish Symmetric key = "+skey);
21 return skey;
22
23 }
24
25 private static byte[] getRawKey(byte[] seed) throws Exception {
26
27 KeyGenerator kgen = KeyGenerator.getInstance("Blowfish");
28
29 SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
30
31 sr.setSeed(seed);
32
33 kgen.init(128, sr); // 128, 256 and 448 bits may not be available
34
35 SecretKey skey = kgen.generateKey();
36
37 byte[] raw = skey.getEncoded();
38
39 return raw;
40
41 }
42
43
44 public static void main(String args[]) throws Exception {
45
46 byte[] array = generateSymmetricKey();
47
48 System.out.println(array);
49
50 BigInteger bigInt = new BigInteger(array);
51
52// shift
53 BigInteger shiftInt = bigInt.shiftRight(4);
54
55// back to array
56 byte [] shifted = shiftInt.toByteArray();
57
58 byte[] og = shiftInt.shiftLeft(4).toByteArray();
59
60
61 System.out.println(og);
62 }
63
64
65}