AES.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package com.zhongzheng.common.utils;
  2. import org.bouncycastle.jce.provider.BouncyCastleProvider;
  3. import javax.crypto.BadPaddingException;
  4. import javax.crypto.Cipher;
  5. import javax.crypto.IllegalBlockSizeException;
  6. import javax.crypto.NoSuchPaddingException;
  7. import javax.crypto.spec.IvParameterSpec;
  8. import javax.crypto.spec.SecretKeySpec;
  9. import java.security.*;
  10. public class AES {
  11. public static boolean initialized = false;
  12. /**
  13. * AES解密
  14. * @param content 密文
  15. * @return
  16. * @throws InvalidAlgorithmParameterException
  17. * @throws NoSuchProviderException
  18. */
  19. public static byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {
  20. initialize();
  21. try {
  22. // Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding");
  23. Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
  24. Key sKeySpec = new SecretKeySpec(keyByte, "AES");
  25. cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化
  26. byte[] result = cipher.doFinal(content);
  27. return result;
  28. } catch (NoSuchAlgorithmException e) {
  29. e.printStackTrace();
  30. } catch (NoSuchPaddingException e) {
  31. e.printStackTrace();
  32. } catch (InvalidKeyException e) {
  33. e.printStackTrace();
  34. } catch (IllegalBlockSizeException e) {
  35. e.printStackTrace();
  36. } catch (BadPaddingException e) {
  37. e.printStackTrace();
  38. } catch (NoSuchProviderException e) {
  39. // TODO Auto-generated catch block
  40. e.printStackTrace();
  41. } catch (Exception e) {
  42. // TODO Auto-generated catch block
  43. e.printStackTrace();
  44. }
  45. return null;
  46. }
  47. public static void initialize(){
  48. if (initialized) return;
  49. Security.addProvider(new BouncyCastleProvider());
  50. initialized = true;
  51. }
  52. //生成iv
  53. public static AlgorithmParameters generateIV(byte[] iv) throws Exception{
  54. AlgorithmParameters params = AlgorithmParameters.getInstance("AES");
  55. params.init(new IvParameterSpec(iv));
  56. return params;
  57. }
  58. public static String SHA1(String decript) {
  59. try {
  60. MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
  61. digest.update(decript.getBytes());
  62. byte messageDigest[] = digest.digest();
  63. // Create Hex String
  64. StringBuffer hexString = new StringBuffer();
  65. // 字节数组转换为 十六进制 数
  66. for (int i = 0; i < messageDigest.length; i++) {
  67. String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
  68. if (shaHex.length() < 2) {
  69. hexString.append(0);
  70. }
  71. hexString.append(shaHex);
  72. }
  73. return hexString.toString();
  74. } catch (NoSuchAlgorithmException e) {
  75. e.printStackTrace();
  76. }
  77. return "";
  78. }
  79. }