激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - java使用Hex編碼解碼實現(xiàn)Aes加密解密功能示例

java使用Hex編碼解碼實現(xiàn)Aes加密解密功能示例

2020-07-23 11:48QH_JAVA Java教程

這篇文章主要介紹了java使用Hex編碼解碼實現(xiàn)Aes加密解密功能,結(jié)合完整實例形式分析了Aes加密解密功能的定義與使用方法,需要的朋友可以參考下

本文實例講述了java使用Hex編碼解碼實現(xiàn)Aes加密解密功能。分享給大家供大家參考,具體如下:

這里的Aes加密解密方法使用Hex進(jìn)行了編碼解碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package com.baidu.wallet.bdwallet.utils;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;
public class Test {
   private static final String AES="AES";
   private static final String UTF8="UTF-8";
    /**
    * AES加密
    * @param content
    * @param pkey
    * @return
    * @throws DecoderException
    */
    private static byte[] encrypt(String content, String pkey) throws DecoderException {
      try {
        String private_key=pkey;
        byte[] encodeFormat=null;
        try {
          //秘鑰 Hex解碼為什么秘鑰要進(jìn)行解碼,因為秘鑰是某個秘鑰明文進(jìn)行了Hex編碼后的值,所以在使用的時候要進(jìn)行解碼
          encodeFormat = Hex.decodeHex(private_key.toCharArray());
        } catch (DecoderException e) {
          e.printStackTrace();
        }
        SecretKeySpec key = new SecretKeySpec(encodeFormat, AES);
        // Cipher對象實際完成加密操作
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        // 加密內(nèi)容進(jìn)行編碼
        byte[] byteContent = content.getBytes(UTF8);
        // 用密匙初始化Cipher對象
        cipher.init(Cipher.ENCRYPT_MODE, key);
        // 正式執(zhí)行加密操作
        byte[] result = cipher.doFinal(byteContent);
        return result;
      } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
      } catch (NoSuchPaddingException e) {
        e.printStackTrace();
      } catch (InvalidKeyException e) {
        e.printStackTrace();
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
      } catch (IllegalBlockSizeException e) {
        e.printStackTrace();
      } catch (BadPaddingException e) {
        e.printStackTrace();
      }
      return null;
    }
    /**
     * AES解密
     * @param contents
     * @param password
     * @return
     * @throws DecoderException
     */
    private static byte[] decrypt(String contents, String password) throws DecoderException {
      try {
        //密文使用Hex解碼
        byte[]content = Hex.decodeHex(contents.toCharArray());
        //秘鑰 Hex解碼為什么秘鑰要進(jìn)行解碼,因為秘鑰是某個秘鑰明文進(jìn)行了Hex編碼后的值,所以在使用的時候要進(jìn)行解碼
        byte[] encodeFormat = Hex.decodeHex(password.toCharArray());
        SecretKeySpec key = new SecretKeySpec(encodeFormat, AES);
        // Cipher對象實際完成加密操作
        Cipher cipher = Cipher.getInstance(AES);
        // 用密匙初始化Cipher對象
        cipher.init(Cipher.DECRYPT_MODE, key);
        // 正式執(zhí)行解密操作
        byte[] result = cipher.doFinal(content);
        return result;
      } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
      } catch (NoSuchPaddingException e) {
        e.printStackTrace();
      } catch (InvalidKeyException e) {
        e.printStackTrace();
      } catch (IllegalBlockSizeException e) {
        e.printStackTrace();
      } catch (BadPaddingException e) {
        e.printStackTrace();
      }
      return null;
    }
    /**
     * Aes加密
     * @param context 明文
     * @param private_key 秘鑰
     * @return
     * @throws DecoderException
     */
    public static String encryption(String context,String private_key) throws DecoderException{
      //加密后的明文也就變成了密文
      byte[] encryptResult = encrypt(context, private_key);
      //密碼文Hex編碼
      String encryptResultStr = Hex.encodeHexString(encryptResult);
      return encryptResultStr;
    }
    /**
    * Aes解密
    * @param context 密文
    * @param private_key 秘鑰
    * @return
    * @throws DecoderException
    * @throws UnsupportedEncodingException
    */
    public static String decryption(String context,String private_key) throws DecoderException, UnsupportedEncodingException{
     //這里的密文解密前先進(jìn)行了Hex解碼
      byte[] decryptResult = decrypt(context, private_key);
      String result = new String(decryptResult, UTF8);
      return result;
    }
    public static void main(String[] args) throws UnsupportedEncodingException, DecoderException {
      //加密內(nèi)容
      String content = "123456787654321";
      //AES加密解密秘鑰
      String password = "這個值一般都是給定的,雙發(fā)都知道";
      // 加密
      System.out.println("加密前:" + content);
      // 調(diào)用加密方法
      String encryptResultStr = encryption(content, password);
      System.out.println("加密后:" + encryptResultStr);
      // 調(diào)用解密方法
      String result = decryption(encryptResultStr, password);
      // 解密內(nèi)容進(jìn)行解碼
      System.out.println("解密后:" + result);
    }
}

這個方法在正式的項目中已經(jīng)在使用木有問題,注意這里的AES加密解密你要要對哦……

上面使用的就是org.apache.commons.codec.binary.Hex這個類的方法,在maven中配置如下:

?
1
2
3
4
5
<dependency>
  <groupId>commons-codec</groupId>
  <artifactId>commons-codec</artifactId>
  <version>1.4</version>
</dependency>

注意:這里要使用1.4以及以上版本,應(yīng)為1.4以下的沒有Hex.encodeHexString(byte[])這個方法!

希望本文所述對大家java程序設(shè)計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女久久久久久久久 | 蜜桃网站免费 | 黄色网址进入 | 成人午夜免费看 | 亚洲精品动漫在线观看 | 免费放黄网站在线播放 | 精品国产一区二区三区在线观看 | 国产精品久久久免费 | 国产高潮好爽受不了了夜色 | 欧美黄色免费视频 | 国产污网站在线观看 | 色阁五月 | 亚洲人成网站在e线播放 | h视频免费看 | 免费观看三级毛片 | 国产欧美日韩在线播放 | 成人精品一区二区 | 午夜偷拍视频 | 欧美成人h版在线观看 | 一级毛片电影网 | 色女人在线 | 欧美日本色 | 日本黄色一级视频 | 国产成人午夜高潮毛片 | 国产欧美精品一区二区三区四区 | 国产日韩免费观看 | 天堂成人一区二区三区 | 国产成人精品午夜视频' | 久久久久国产成人免费精品免费 | 法国性hdfreexxxx人妖 | 蜜桃网在线观看 | 在线成人免费观看 | 久久91亚洲精品久久91综合 | 久久777国产线看观看精品 | 亚洲精品在线观看网站 | 国产在线精品一区二区 | 九一成人| 国产精品久久久久久久久久10秀 | 一区二区三区在线观看免费视频 | 成人永久免费视频 | 日本羞羞的午夜电视剧 |