[Java] AES encryption and decryption machine tool class code

 1 import java.security.NoSuchAlgorithmException;
 2 import java.security.SecureRandom;
 3 
 4 import javax.crypto.Cipher;
 5 import javax.crypto.KeyGenerator;
 6 import javax.crypto.SecretKey;
 7 import javax.crypto.spec.SecretKeySpec;
 8 
 9 public final class AES {
10    //加密
11     public static String encrypt(String content, String key) throws Exception {
12 
13         Cipher cipher = Cipher.getInstance("AES");
14         cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(generateKey(key).getEncoded(), "AES"));
15         byte[] b = cipher.doFinal(content.getBytes("UTF-8"));
16 
17         if (b == null || b.length == 0) {
18             return "";
19         }
20 
21         StringBuffer buf = new StringBuffer();
22         for (int i = 0; i < b.length; i++) {
23 
24             String hex = Integer.toHexString(b[i] & 0xFF);
25 
26             if (hex.length() == 1) {
27                 hex = '0' + hex;
28             }
29             buf.append(hex.toUpperCase());
30         }
31         return buf.toString();
32     }
33     //解密
34     public static String decrypt(String content, String key) throws Exception {
35 
36         if (content == null || content.length() == 0) {
37             return null;
38         }
39 
40         byte[] b = new byte[content.length() / 2];
41         for (int i = 0; i < content.length() / 2; i++) {
42             int high = Integer.parseInt(content.substring(i * 2, i * 2 + 1), 16);
43             int low = Integer.parseInt(content.substring(i * 2 + 1, i * 2 + 2), 16);
44             b[i] = (byte) (high * 16 + low);
45         }
46 
47         Cipher cipher = Cipher.getInstance("AES");
48         cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(generateKey(key).getEncoded(), "AES"));
49 
50         return new String(cipher.doFinal(b));
51     }
52 
53     private static SecretKey generateKey(String key) throws NoSuchAlgorithmException {
54 
55         SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
56         KeyGenerator kg = KeyGenerator.getInstance("AES");
57 
58         secureRandom.setSeed (key.getBytes ());
 59          kg.init (128 , secureRandom);
 60  
61 is          return kg.generateKey ();
 62 is      }
 63 is     // test
 64      public  static  void main (String [] args) {
 65  
66          the try {
 67              String STR = "test the AES" ;
 68              String secretKey = "secret key" ;
 69  
70              System.out.println ( "secret keys:" + secretKey);
 71 is              System.out.println ( "plain text:" + STR );
 72  
73 is             String str0 = encrypt(str, secretKey);
74             System.out.println("密文:" + str0);
75             System.out.println("解密:" + decrypt(str0, secretKey));
76 
77         } catch (Exception e) {
78             e.printStackTrace();
79         }
80     }
81 }

 

Guess you like

Origin www.cnblogs.com/itworkers/p/11770916.html