MCPcopy Create free account
hub / github.com/0opslab/opslabJutil / AESEncode

Method AESEncode

src/main/java/com/opslab/util/encrypt/ASEUtil.java:26–73  ·  view source on GitHub ↗
(String encodeRules, String content)

Source from the content-addressed store, hash-verified

24 * 6.返回字符串
25 */
26 public static String AESEncode(String encodeRules, String content) {
27 try {
28 // 1.构造密钥生成器,指定为AES算法,不区分大小写
29 KeyGenerator keygen = KeyGenerator.getInstance("AES");
30 // 2.根据ecnodeRules规则初始化密钥生成器
31 // 生成一个128位的随机源,根据传入的字节数组
32 SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
33 random.setSeed(encodeRules.getBytes());
34 keygen.init(128, random);
35 // 3.产生原始对称密钥
36 SecretKey original_key = keygen.generateKey();
37 // 4.获得原始对称密钥的字节数组
38 byte[] raw = original_key.getEncoded();
39 // 5.根据字节数组生成AES密钥
40 SecretKey key = new SecretKeySpec(raw, "AES");
41 // 6.根据指定算法AES自成密码器
42 Cipher cipher = Cipher.getInstance("AES");
43 // 7.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEY
44 cipher.init(Cipher.ENCRYPT_MODE, key);
45 // 8.获取加密内容的字节数组(这里要设置为utf-8)不然内容中如果有中文和英文混合中文就会解密为乱码
46 byte[] byte_encode = content.getBytes(Opslab.UTF_8);
47 // 9.根据密码器的初始化方式--加密:将数据加密
48 byte[] byte_AES = cipher.doFinal(byte_encode);
49 // 10.将加密后的数据转换为字符串
50 // 这里用Base64Encoder中会找不到包
51 // 解决办法:
52 // 在项目的Build path中先移除JRE System Library,再添加库JRE System
53 // Library,重新编译后就一切正常了。
54 //11.将字符串返回
55 return new String(Base64Ext.encode(byte_AES, Base64Ext.NO_WRAP));
56
57 } catch (NoSuchAlgorithmException e) {
58 e.printStackTrace();
59 } catch (NoSuchPaddingException e) {
60 e.printStackTrace();
61 } catch (InvalidKeyException e) {
62 e.printStackTrace();
63 } catch (IllegalBlockSizeException e) {
64 e.printStackTrace();
65 } catch (BadPaddingException e) {
66 e.printStackTrace();
67 } catch (UnsupportedEncodingException e) {
68 e.printStackTrace();
69 }
70
71 // 如果有错就返加nulll
72 return null;
73 }
74
75 /*
76 * 解密 解密过程:

Callers 2

aesEncryptMethod · 0.95
encryptMethod · 0.95

Calls 2

encodeMethod · 0.95
initMethod · 0.80

Tested by

no test coverage detected