国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

Java原生方法實現 AES 算法示例

2024-07-14 08:43:57
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岑巩县| 碌曲县| 文登市| 嘉黎县| 甘德县| 富裕县| 容城县| 界首市| 海安县| 左云县| 庐江县| 鱼台县| 鸡泽县| 延庆县| 上思县| 富裕县| 孙吴县| 霍州市| 天全县| 广水市| 广宁县| 平陆县| 广丰县| 汉沽区| 阿城市| 鹰潭市| 都匀市| 吉隆县| 板桥市| 信丰县| 沅陵县| 渝中区| 潞西市| 花莲市| 监利县| 密云县| 鄂伦春自治旗| 海盐县| 马关县| 克什克腾旗| 纳雍县|