| | |
| | | package com.panzhihua.common.utlis; |
| | | |
| | | |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.security.InvalidKeyException; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.security.SecureRandom; |
| | | |
| | | import javax.crypto.BadPaddingException; |
| | | import javax.crypto.Cipher; |
| | | import javax.crypto.IllegalBlockSizeException; |
| | | import javax.crypto.KeyGenerator; |
| | | import javax.crypto.NoSuchPaddingException; |
| | | import javax.crypto.SecretKey; |
| | | import javax.crypto.*; |
| | | import javax.crypto.spec.SecretKeySpec; |
| | | |
| | | public class AES { |
| | |
| | | try { |
| | | KeyGenerator kgen = KeyGenerator.getInstance("AES"); |
| | | |
| | | SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG") ; |
| | | SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); |
| | | secureRandom.setSeed(password.getBytes()); |
| | | kgen.init(128, secureRandom); |
| | | |
| | |
| | | byte[] enCodeFormat = secretKey.getEncoded(); |
| | | SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); |
| | | Cipher cipher = Cipher.getInstance("AES");// 创建密码器 |
| | | byte[] byteContent = content.getBytes("utf-8"); |
| | | byte[] byteContent = content.getBytes(StandardCharsets.UTF_8); |
| | | cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化 |
| | | byte[] result = cipher.doFinal(byteContent); |
| | | return result; // 加密 |
| | |
| | | } catch (NoSuchPaddingException e) { |
| | | e.printStackTrace(); |
| | | } catch (InvalidKeyException e) { |
| | | e.printStackTrace(); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (IllegalBlockSizeException e) { |
| | | e.printStackTrace(); |
| | |
| | | String charset = "utf-8"; |
| | | KeyGenerator kgen = KeyGenerator.getInstance("AES"); |
| | | |
| | | SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG") ; |
| | | SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); |
| | | secureRandom.setSeed(password.getBytes()); |
| | | kgen.init(128, secureRandom); |
| | | |
| | |
| | | e.printStackTrace(); |
| | | } catch (IllegalBlockSizeException e) { |
| | | e.printStackTrace(); |
| | | } catch (BadPaddingException e) { |
| | | } catch (BadPaddingException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | |
| | | * @param buf |
| | | * @return |
| | | */ |
| | | public static String parseByte2HexStr(byte buf[]) { |
| | | public static String parseByte2HexStr(byte[] buf) { |
| | | StringBuffer sb = new StringBuffer(); |
| | | for (int i = 0; i < buf.length; i++) { |
| | | String hex = Integer.toHexString(buf[i] & 0xFF); |
| | |
| | | for (int i = 0; i < hexStr.length() / 2; i++) { |
| | | int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16); |
| | | int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16); |
| | | result[i] = (byte) (high * 16 + low); |
| | | result[i] = (byte)(high * 16 + low); |
| | | } |
| | | return result; |
| | | } |
| | |
| | | try { |
| | | SecretKeySpec key = new SecretKeySpec(password.getBytes(), "AES"); |
| | | Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding"); |
| | | byte[] byteContent = content.getBytes("utf-8"); |
| | | byte[] byteContent = content.getBytes(StandardCharsets.UTF_8); |
| | | cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化 |
| | | byte[] result = cipher.doFinal(byteContent); |
| | | return result; // 加密 |
| | |
| | | } catch (NoSuchPaddingException e) { |
| | | e.printStackTrace(); |
| | | } catch (InvalidKeyException e) { |
| | | e.printStackTrace(); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (IllegalBlockSizeException e) { |
| | | e.printStackTrace(); |
| | |
| | | System.out.println("加密前:" + content); |
| | | byte[] encode = encrypt(content, password); |
| | | |
| | | //传输过程,不转成16进制的字符串,就等着程序崩溃掉吧 |
| | | // 传输过程,不转成16进制的字符串,就等着程序崩溃掉吧 |
| | | String code = parseByte2HexStr(encode); |
| | | System.out.println("密文字符串:" + code); |
| | | byte[] decode = parseHexStr2Byte(code); |
| | | // 解密 |
| | | byte[] decryptResult = decrypt(decode, password); |
| | | System.out.println("解密后:" + new String(decryptResult, "UTF-8")); //不转码会乱码 |
| | | System.out.println("解密后:" + new String(decryptResult, StandardCharsets.UTF_8)); // 不转码会乱码 |
| | | |
| | | } |
| | | } |