激情久久久_欧美视频区_成人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基于AES對稱加密算法實(shí)現(xiàn)的加密與解密功能示例

java基于AES對稱加密算法實(shí)現(xiàn)的加密與解密功能示例

2020-07-22 15:10QH_JAVA Java教程

這篇文章主要介紹了java基于AES對稱加密算法實(shí)現(xiàn)的加密與解密功能,結(jié)合完整實(shí)例形式分析了AES對稱加密算法的定義與使用技巧,需要的朋友可以參考下

本文實(shí)例講述了java基于AES對稱加密算法實(shí)現(xià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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package com.soufun.com;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Date;
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.spec.SecretKeySpec;
/**
 * @author WHD
 */
public class AesUtil {
  private static final String AES="AES";
  private static final String UTF8="UTF-8";
  static KeyGenerator kgen =null;
  static{
    try {
      kgen= KeyGenerator.getInstance(AES);
    } catch (NoSuchAlgorithmException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  /*
   * @param content:
   * @param password:
   */
  private static byte[] encrypt(String content, String password) {
    try {
      // 使用靜態(tài)代碼塊來生成KeyGenerator對象
      //KeyGenerator kgen = KeyGenerator.getInstance(AES);
      // 使用128 位
      kgen.init(128, new SecureRandom(password.getBytes()));
      SecretKey secretKey = kgen.generateKey();
      byte[] encodeFormat = secretKey.getEncoded();
      SecretKeySpec key = new SecretKeySpec(encodeFormat, AES);
      // Cipher對象實(shí)際完成加密操作
      Cipher cipher = Cipher.getInstance(AES);
      // 加密內(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;
  }
  /*
   * @param content:
   * @param password:
   */
  private static byte[] decrypt(byte[] content, String password) {
    try {// 使用靜態(tài)代碼塊來生成KeyGenerator對象
      //KeyGenerator kgen = KeyGenerator.getInstance(AES);
      // 使用128 位
      kgen.init(128, new SecureRandom(password.getBytes()));
      SecretKey secretKey = kgen.generateKey();
      byte[] encodeFormat = secretKey.getEncoded();
      SecretKeySpec key = new SecretKeySpec(encodeFormat, AES);
      // Cipher對象實(shí)際完成加密操作
      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;
  }
  /**
   * 二進(jìn)制--》十六進(jìn)制轉(zhuǎn)化
   * @param buf
   * @return
   */
  private static String parseByte2HexStr(byte buf[]) {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < buf.length; i++) {
      String hex = Integer.toHexString(buf[i] & 0xFF);
      if (hex.length() == 1) {
        hex = '0' + hex;
      }
      sb.append(hex.toUpperCase());
    }
    return sb.toString();
  }
  /**
   * 十六進(jìn)制--》二進(jìn)制轉(zhuǎn)化
   * @param hexStr
   * @return
   */
  private static byte[] parseHexStr2Byte(String hexStr) {
    if (hexStr.length() < 1) {
      return null;
    }
    byte[] result = new byte[hexStr.length() / 2];
    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);
    }
    return result;
  }
  public static void main(String[] args) throws UnsupportedEncodingException {
    long begin=new Date().getTime();
    String content = "aaades加密測試";
    String password = "12345678dd";
    // 加密
    System.out.println("加密前:" + content);
    byte[] encryptResult = encrypt(content, password);
    String encryptResultStr = parseByte2HexStr(encryptResult);
    System.out.println("加密后:" + encryptResultStr);
    // 解密
    byte[] decryptFrom = parseHexStr2Byte(encryptResultStr);
    byte[] decryptResult = decrypt(decryptFrom, password);
    // 解密內(nèi)容進(jìn)行解碼
    String result = new String(decryptResult, UTF8);
    System.out.println("解密后:" + result);
    long end= new Date().getTime();
    System.out.println(end-begin);
  }
}

注:SecureRandom是生成安全隨機(jī)數(shù)序列,password.getBytes()是種子,只要種子相同,序列就一樣,所以解密只要有password就行,可以復(fù)原這個序列。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 97视频一二区 | 高潮激情aaaaa免费看 | 少妇色诱麻豆色哟哟 | 毛片免费在线观看视频 | 干色视频| 久久久久久久99 | 国产91丝袜在线熟 | 91看片淫黄大片欧美看国产片 | 欧美videofree性欧美另类 | 亚洲欧美日韩在线 | 成人黄色免费电影 | 国产99久久久久 | 国产一区二区三区欧美 | 国产91对白叫床清晰播放 | 久久人人爽人人爽人人片av免费 | 日本精品久久久一区二区三区 | 欧美日本免费一区二区三区 | 91短视频版高清在线观看www | 亚洲视频在线观看免费 | 国产精品自拍啪啪 | 欧产日产国产精品v | 亚洲精品一区中文字幕 | 美女被免费网站在线软件 | 日韩欧美电影一区二区三区 | 成人午夜激情网 | 久久国产一级 | 日本高清无遮挡 | 欧美性猛交xxx乱大交3蜜桃 | 黄色免费视频在线 | 亚洲成人自拍电影 | 日韩欧美视频一区二区三区 | 国产一级毛片视频在线! | 精品中文字幕久久久久四十五十骆 | 一区播放 | 精品久久久91 | 亚洲精品一区二区三区免 | 一区二区三区国产在线 | 精品亚洲国产视频 | 久久亚洲精品国产一区 | 久久在线精品 | 黄色网址入口 |