一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - Java教程 - java使用Hex編碼解碼實現Aes加密解密功能示例

java使用Hex編碼解碼實現Aes加密解密功能示例

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

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

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

這里的Aes加密解密方法使用Hex進行了編碼解碼

?
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解碼為什么秘鑰要進行解碼,因為秘鑰是某個秘鑰明文進行了Hex編碼后的值,所以在使用的時候要進行解碼
          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");
        // 加密內容進行編碼
        byte[] byteContent = content.getBytes(UTF8);
        // 用密匙初始化Cipher對象
        cipher.init(Cipher.ENCRYPT_MODE, key);
        // 正式執行加密操作
        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解碼為什么秘鑰要進行解碼,因為秘鑰是某個秘鑰明文進行了Hex編碼后的值,所以在使用的時候要進行解碼
        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);
        // 正式執行解密操作
        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{
     //這里的密文解密前先進行了Hex解碼
      byte[] decryptResult = decrypt(context, private_key);
      String result = new String(decryptResult, UTF8);
      return result;
    }
    public static void main(String[] args) throws UnsupportedEncodingException, DecoderException {
      //加密內容
      String content = "123456787654321";
      //AES加密解密秘鑰
      String password = "這個值一般都是給定的,雙發都知道";
      // 加密
      System.out.println("加密前:" + content);
      // 調用加密方法
      String encryptResultStr = encryption(content, password);
      System.out.println("加密后:" + encryptResultStr);
      // 調用解密方法
      String result = decryption(encryptResultStr, password);
      // 解密內容進行解碼
      System.out.println("解密后:" + result);
    }
}

這個方法在正式的項目中已經在使用木有問題,注意這里的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以及以上版本,應為1.4以下的沒有Hex.encodeHexString(byte[])這個方法!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 羞羞影院午夜男女爽爽影院网站 | 日本中文字幕一区二区有码在线 | 久久久久久久尹人综合网亚洲 | 免费理伦片高清在线 | 日本无遮挡吸乳视频看看 | 男人天堂视频网 | 精品一区二区三区免费毛片 | 国产毛片在线高清视频 | 爽好舒服使劲添高h视频 | 青青草色| 脱女学小内内摸出水网站免费 | 99网站在线观看 | 国产成人精品一区二三区2022 | 亚洲+欧美+国产+综合 | 欧美人畜 | 久久精品人人做人人爽97 | 欧美色综合高清免费 | 亚洲色影| 22sihu国产精品视频影视资讯 | 美女视频在线观看视频 | 免费高清视频在线观看 | 黑人与欧洲女子性大战 | 男人v天堂 | 久久婷婷五月综合色丁香 | 摸咪网在线影院在线观看 | 99国产精品免费观看视频 | 欧美精品国产第一区二区 | 日韩免费一级 | 5月色婷婷 | 欧美精品亚洲精品日韩1818 | 国产好痛疼轻点好爽的视频 | 国产偷窥 | 好紧好爽范冰冰系列 | 日本在线亚州精品视频在线 | 沉香如屑西瓜视频免费观看完整版 | 韩国三级2020 | 亚洲欧美久久久久久久久久爽网站 | 精品综合久久久久久8888 | 视频一本大道香蕉久在线播放 | 高h短篇校园1v1 | 日本国产成人精品视频 |