亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Java怎么實現一個AES 算法

發布時間:2021-04-14 17:49:12 來源:億速云 閱讀:179 作者:Leah 欄目:編程語言

這篇文章給大家介紹使用Java怎么實現一個AES 算法,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

AES(Advanced Encryption Standard)高級加密標準,在密碼學中又稱 Rijndael 加密法,是美國聯邦政府采用的一種區塊加密標準 。 這個標準用來替代原先的 DES ,已經被多方分析且廣為全世界所使用 。 現已成為對稱密鑰加密中最流行的算法之一 。

/**
 * AES 算法
 * <p/>
 * 算法采用加密模式:CBC;數據塊:128;填充:PKCS5Padding
 * <p/>
 * key 與向量字符串的長度為 16 位
 *
 * @author Deniro Li (lisq037@163.com)
 *     2018/3/17
 */
public class AES {
  /**
   * 算法名稱
   */
  public static final String NAME = "AES";
  /**
   * 加密模式:CBC;數據塊:128;填充:PKCS5Padding
   */
  public final String MODE = "AES/CBC/PKCS5Padding";
  /**
   * KEY 與 向量字符串的長度
   */
  public static final int LENGTH = 16;
  /**
   * 加密用的 KEY
   */
  private String key;
  /**
   * 向量,用于增加加密強度
   */
  private String ivParameter;
  /**
   * @param key     加密用的 KEY
   * @param ivParameter 偏移量
   */
  public AES(String key, String ivParameter) {
    if (key == null || key.length() != LENGTH) {
      throw new AESException("KEY 不存在,或者長度不為 " + LENGTH);
    }
    if (ivParameter == null || ivParameter.length() != LENGTH) {
      throw new AESException("ivParameter 不存在,或者長度不為 " + 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);
    }
  }
}

單元測試:

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=="));
  }
}

關于使用Java怎么實現一個AES 算法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云林县| 阳江市| 昌邑市| 长垣县| 萨迦县| 丰镇市| 马边| 巫溪县| 西昌市| 南和县| 资讯| 健康| 武鸣县| 喀喇沁旗| 昂仁县| 湖南省| 福清市| 南开区| 开封县| 玉田县| 巩义市| 洪雅县| 宜州市| 曲靖市| 罗田县| 连城县| 抚顺县| 密云县| 富源县| 金华市| 密山市| 西城区| 重庆市| 宿松县| 泽库县| 兰溪市| 香格里拉县| 铜川市| 临汾市| 醴陵市| 黔西县|