最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java原生方法實(shí)現(xiàn) AES 算法示例

 更新時(shí)間:2019年03月06日 08:36:53   作者:deniro_li  
這篇文章主要介紹了Java原生方法實(shí)現(xiàn) AES 算法,結(jié)合實(shí)例形式分析了Java實(shí)現(xiàn)AES加密算法的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Java原生方法實(shí)現(xiàn) AES 算法。分享給大家供大家參考,具體如下:

AES(Advanced Encryption Standard)高級(jí)加密標(biāo)準(zhǔn),在密碼學(xué)中又稱 Rijndael 加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn) 。 這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的 DES ,已經(jīng)被多方分析且廣為全世界所使用 。 現(xiàn)已成為對(duì)稱密鑰加密中最流行的算法之一 。

/**
 * AES 算法
 * <p/>
 * 算法采用加密模式:CBC;數(shù)據(jù)塊:128;填充:PKCS5Padding
 * <p/>
 * key 與向量字符串的長(zhǎng)度為 16 位
 *
 * @author Deniro Li (lisq037@163.com)
 *     2018/3/17
 */
public class AES {
  /**
   * 算法名稱
   */
  public static final String NAME = "AES";
  /**
   * 加密模式:CBC;數(shù)據(jù)塊:128;填充:PKCS5Padding
   */
  public final String MODE = "AES/CBC/PKCS5Padding";
  /**
   * KEY 與 向量字符串的長(zhǎng)度
   */
  public static final int LENGTH = 16;
  /**
   * 加密用的 KEY
   */
  private String key;
  /**
   * 向量,用于增加加密強(qiáng)度
   */
  private String ivParameter;
  /**
   * @param key     加密用的 KEY
   * @param ivParameter 偏移量
   */
  public AES(String key, String ivParameter) {
    if (key == null || key.length() != LENGTH) {
      throw new AESException("KEY 不存在,或者長(zhǎng)度不為 " + LENGTH);
    }
    if (ivParameter == null || ivParameter.length() != LENGTH) {
      throw new AESException("ivParameter 不存在,或者長(zhǎng)度不為 " + LENGTH);
    }
    this.key = key;
    this.ivParameter = ivParameter;
  }
  /**
   * 加密
   *
   * @param s 要加密的字符串
   * @return 加密后的字符串
   */
  public String encode(String s) {
    String result;
    try {
      Cipher cipher = Cipher.getInstance(MODE);
      IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());
      cipher.init(ENCRYPT_MODE, new SecretKeySpec(key.getBytes(), NAME), iv);
      byte[] bytes = cipher.doFinal(s.getBytes(ENCODING));
      result = new BASE64Encoder().encode(bytes);
    } catch (Exception e) {
      throw new AESException("加密", e);
    }
    return result;
  }
  /**
   * 解密
   *
   * @param s 待解密的字符串
   * @return 解密后的字符串
   */
  public String decode(String s) {
    try {
      SecretKeySpec keySpec = new SecretKeySpec(key.getBytes("ASCII"), NAME);
      Cipher cipher = Cipher.getInstance(MODE);
      IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());
      cipher.init(Cipher.DECRYPT_MODE, keySpec, iv);
      return new String(cipher.doFinal(new BASE64Decoder().decodeBuffer(s)), ENCODING);
    } catch (Exception e) {
      throw new AESException("解密", e);
    }
  }
}

單元測(cè)試:

public class AESTest {
  AES aes;
  @Before
  public void init(){
    aes=new AES("12345abcdef67890","1234567890abcdef");
  }
  @Test
  public void testEncode() throws Exception {
    Assert.assertEquals("jANei3LBvnLCaZ2XddWHZw==", aes.encode("123456"));
  }
  @Test
  public void testDecode() throws Exception {
    Assert.assertEquals("123456", aes.decode("jANei3LBvnLCaZ2XddWHZw=="));
  }
}

PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:

文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password

在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java字符與字符串操作技巧總結(jié)》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總

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

相關(guān)文章

  • spring boot如何使用POI讀取Excel文件

    spring boot如何使用POI讀取Excel文件

    本文主要介紹使用POI進(jìn)行Excel文件的相關(guān)操作,涉及讀取文件,獲取sheet表格,對(duì)單元格內(nèi)容進(jìn)行讀寫操作,以及合并單元格的操作
    2021-08-08
  • Java開(kāi)發(fā)編程到底是用idea好還是eclipse好

    Java開(kāi)發(fā)編程到底是用idea好還是eclipse好

    這篇文章主要介紹了Java開(kāi)發(fā)編程到底是用idea好還是eclipse好,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring Data JPA 建立表的聯(lián)合主鍵

    Spring Data JPA 建立表的聯(lián)合主鍵

    這篇文章主要介紹了Spring Data JPA 建立表的聯(lián)合主鍵。本文詳細(xì)的介紹了2種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04
  • Java網(wǎng)絡(luò)通信基礎(chǔ)編程(必看篇)

    Java網(wǎng)絡(luò)通信基礎(chǔ)編程(必看篇)

    下面小編就為大家?guī)?lái)一篇Java網(wǎng)絡(luò)通信基礎(chǔ)編程(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Java實(shí)現(xiàn)多項(xiàng)式除法的代碼示例

    Java實(shí)現(xiàn)多項(xiàng)式除法的代碼示例

    今天小編就為大家分享一篇關(guān)于Java實(shí)現(xiàn)多項(xiàng)式除法的代碼示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • java模擬ajax訪問(wèn)另一個(gè)項(xiàng)目的controller代碼實(shí)例

    java模擬ajax訪問(wèn)另一個(gè)項(xiàng)目的controller代碼實(shí)例

    今天小編就為大家分享一篇關(guān)于java模擬ajax訪問(wèn)另一個(gè)項(xiàng)目的controller代碼實(shí)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • java使用多線程找出最大隨機(jī)數(shù)

    java使用多線程找出最大隨機(jī)數(shù)

    這篇文章主要為大家詳細(xì)介紹了java使用多線程找出最大隨機(jī)數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • jdbc實(shí)現(xiàn)寵物商店管理系統(tǒng)

    jdbc實(shí)現(xiàn)寵物商店管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了jdbc實(shí)現(xiàn)寵物商店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 詳解Spring boot上配置與使用mybatis plus

    詳解Spring boot上配置與使用mybatis plus

    這篇文章主要介紹了詳解Spring boot上配置與使用mybatis plus,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • java使用dbcp2數(shù)據(jù)庫(kù)連接池

    java使用dbcp2數(shù)據(jù)庫(kù)連接池

    這篇文章主要為大家詳細(xì)介紹了java使用dbcp2數(shù)據(jù)庫(kù)連接池的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評(píng)論

柯坪县| 蒲城县| 山丹县| 浮山县| 扬州市| 五河县| 藁城市| 玉田县| 同德县| 北宁市| 启东市| 宣汉县| 雷州市| 桓仁| 二连浩特市| 上高县| 漳州市| 高平市| 石屏县| 保康县| 桓仁| 都昌县| 高清| 泗洪县| 安国市| 梁山县| 成都市| 日喀则市| 赣州市| 京山县| 彝良县| 灵丘县| 阜平县| 博客| 门头沟区| 康定县| 红安县| 五寨县| 云阳县| 天等县| 通州区|