JAVA实现AES加密

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  1. 因子

  上次介绍了《JAVA实现AES加密》,中间提到近些年DES使用越来越少,原因就在于其使用56位密钥,比较容易被破解,近些年来逐渐被 AES替代,AES已经变成目前对称加密中最流行算法之一;AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据。本文就简单介绍如何通过JAVA实现AES加密。

  2. JAVA实现

  闲话少许,掠过AES加密原理及算法,关于这些直接搜索专业网站吧,我们直接看JAVA的具体实现。

  2.1 加密

  代码有详细解释,不多废话。

  view plaincopy to clipboardprint?

  /**

  * 加密

  *

  * @param content 需要加密的内容

  * @param password  加密密码

  * @return

  */

  public static byte[] encrypt(String content, String password) {

  try {

  KeyGenerator kgen = KeyGenerator.getInstance("AES");

  kgen.init(128, new SecureRandom(password.getBytes()));

  SecretKey secretKey = kgen.generateKey();

  byte[] enCodeFormat = secretKey.getEncoded();

  SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");

  Cipher cipher = Cipher.getInstance("AES");// 创建密码器

  byte[] byteContent = content.getBytes("utf-8");

  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;

  }

  /**

  * 加密

  *

  * @param content 需要加密的内容

  * @param password  加密密码

  * @return

  */

  public static byte[] encrypt(String content, String password) {

  try {

  KeyGenerator kgen = KeyGenerator.getInstance("AES");

  kgen.init(128, new SecureRandom(password.getBytes()));

  SecretKey secretKey = kgen.generateKey();

  byte[] enCodeFormat = secretKey.getEncoded();

  SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");

  Cipher cipher = Cipher.getInstance("AES");// 创建密码器

  byte[] byteContent = content.getBytes("utf-8");

  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;

  }

  2.2 解密

  代码有详细注释,不多废话

  注意:解密的时候要传入byte数组

  view plaincopy to clipboardprint?

  /**解密

  * @param content  待解密内容

  * @param password 解密密钥

  * @return

  */

  public static byte[] decrypt(byte[] content, String password) {

  try {

  KeyGenerator kgen = KeyGenerator.getInstance("AES");

  kgen.init(128, new SecureRandom(password.getBytes()));

  SecretKey secretKey = kgen.generateKey();

  byte[] enCodeFormat = secretKey.getEncoded();

  SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");

  Cipher cipher = Cipher.getInstance("AES");// 创建密码器

  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;

  }

  /**解密

  * @param content  待解密内容

  * @param password 解密密钥

  * @return

  */

  public static byte[] decrypt(byte[] content, String password) {

  try {

  KeyGenerator kgen = KeyGenerator.getInstance("AES");

  kgen.init(128, new SecureRandom(password.getBytes()));

  SecretKey secretKey = kgen.generateKey();

  byte[] enCodeFormat = secretKey.getEncoded();

  SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");

  Cipher cipher = Cipher.getInstance("AES");// 创建密码器

  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;

  }

上一页123下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答