Java AES加密解密的简单实现方法

废话不多说,直接上代码

package com.mstf.aes;

import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

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;

/**
 * AES加密解密
 * @author ceet
 *
 */
public class AESUntil {
 /**
  * 加密
  *
  *
  */
 public static String Ecodes(String content, String key) {
  if (content == null || content.length() < 1)
   return null;

  try {
   KeyGenerator kgen = KeyGenerator.getInstance("AES");
   kgen.init(128, new SecureRandom(key.getBytes()));
   SecretKey secretKey = kgen.generateKey();
   byte[] enCodeFormat = secretKey.getEncoded();
   SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");
   Cipher cipher = Cipher.getInstance("AES");
   byte[] byteContent = content.getBytes("utf-8");
   cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
   byte[] byteRresult = cipher.doFinal(byteContent);
   StringBuffer sb = new StringBuffer();
   for (int i = 0; i < byteRresult.length; i++) {
    String hex = Integer.toHexString(byteRresult[i] & 0xFF);
    if (hex.length() == 1) {
     hex = '0' + hex;
    }
    sb.append(hex.toUpperCase());
   }
   return sb.toString();
  } 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;
 }

 /**
  * 解密
  *
  *
  */
 public static String Dcodes(String content, String key) {
  if (content == null || content.length() < 1)
   return null;

  if (content.trim().length() < 19)
   return content;

  byte[] byteRresult = new byte[content.length() / 2];
  for (int i = 0; i < content.length() / 2; i++) {
   int high = Integer.parseInt(content.substring(i * 2, i * 2 + 1), 16);
   int low = Integer.parseInt(content.substring(i * 2 + 1, i * 2 + 2), 16);
   byteRresult[i] = (byte) (high * 16 + low);
  }
  try {
   KeyGenerator kgen = KeyGenerator.getInstance("AES");
   kgen.init(128, new SecureRandom(key.getBytes()));
   SecretKey secretKey = kgen.generateKey();
   byte[] enCodeFormat = secretKey.getEncoded();
   SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");
   Cipher cipher = Cipher.getInstance("AES");
   cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
   byte[] result = cipher.doFinal(byteRresult);
   return new String(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;
 }

 /**
  * 详细解释
  * 【ceet为加密的密匙】
  * 【admin为需要加密的字符串】
  * 【67BE5ED967DBA9B9810C295BE6DEF5D5为解密后的字符串】
  * 【如果更改ceet,那么67BE5ED967DBA9B9810C295BE6DEF5D5字符串会发生变化】
  * @param args
  */
 // 调用测试
 public static void main(String[] args) {
  System.out.println("需要加密的内容:"+Ecodes("admin", "ceet"));
  System.out.println("经过解密的内容:"+Dcodes("67BE5ED967DBA9B9810C295BE6DEF5D5", "ceet"));
 }
}

以上这篇Java AES加密解密的简单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java使用AES加密和解密的实例详解

    Java使用AES加密和解密的实例详解 前言: AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128.192.256,分组长度128位,算法应易于各种硬件和软件实现.1998年NIST开始AES第一轮分析.测试和征集,共产生了15个候选算法.1999年3月完成了第二轮AES2的分析.测试.2000年10月2日美国政府正式宣布选中比利时密码学家Joan Daemen 和 Vincent Rijmen 提出的一种密码算法RIJNDAEL 作为 AES. 在应用方面,尽管DES在安全上

  • Java实现的AES256加密解密功能示例

    本文实例讲述了Java实现的AES256加密解密功能.分享给大家供大家参考,具体如下: 一.代码 package com.handler; import java.io.UnsupportedEncodingException; import java.security.Key; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.cry

  • Android、iOS和Java通用的AES128加密解密示例代码

    前言 移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如android和iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输. 这篇文章给大家分享AES的加密和解密.Android和ios通用的AES加密算法.大家可以直接集成到自己的项目.服务器接口如果是用Java写的话.整个框架都完美了.如果是.NET编写的后台接口的话.得改造一下哦 IOS加密 /*加密方法*/ (NSString *)AES256EncryptWithPlainText:(NSString

  • JAVA中AES对称加密和解密过程

    AES对称加密和解密代码详细介绍,供大家参考,具体内容如下 package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom;

  • java基于AES对称加密算法实现的加密与解密功能示例

    本文实例讲述了java基于AES对称加密算法实现的加密与解密功能.分享给大家供大家参考,具体如下: package com.soufun.com; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import

  • java使用Hex编码解码实现Aes加密解密功能示例

    本文实例讲述了java使用Hex编码解码实现Aes加密解密功能.分享给大家供大家参考,具体如下: 这里的Aes加密解密方法使用Hex进行了编码解码 package com.baidu.wallet.bdwallet.utils; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; i

  • Java与Node.js利用AES加密解密出相同结果的方法示例

    前言 工作中遇到nodejs端通过aes加密,安卓客户端Java解密,同样nodejs也需要解密安卓客户端加密过来的内容,发现两个加密结果不一样,查询资料发现java端需要对密钥再MD5加密一遍,以下是Java与Node.js利用AES加密解密出相同结果的方法,需要的朋友们下面来一起学习学习吧. JAVA代码如下: package g.g; import java.security.MessageDigest; import javax.crypto.Cipher; import javax.c

  • Java AES加密解密的简单实现方法

    废话不多说,直接上代码 package com.mstf.aes; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.BadPaddingException; import

  • Java RSA加密解密实现方法分析【附BASE64 jar包下载】

    本文实例讲述了Java RSA加密解密实现方法.分享给大家供大家参考,具体如下: 该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar javabase64-1.3.1.jar 本站下载地址. 注意: RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行. RSA加密对明文的长度是有限制的,如果加密数据过大会抛出如下异常: Exception in thread "main" javax.cryp

  • PHP实现的简单AES加密解密算法实例

    本文实例讲述了PHP简单AES加密解密算法.分享给大家供大家参考,具体如下: /* * 实现AES加密 * $str : 要加密的字符串 * $keys : 加密密钥 * $iv : 加密向量 * $cipher_alg : 加密方式 */ function ecryptdString($str,$keys="6461772803150152",$iv="8105547186756005",$cipher_alg=MCRYPT_RIJNDAEL_128){ $enc

  • Java AES加密和解密教程

    在本教程中,我们将看到如何使用JDK中的Java密码体系结构(JCA)来实现AES加密和解密.对称密钥块密码在数据加密中起重要作用.这意味着同一密钥可用于加密和解密.高级加密标准(AES)是一种广泛使用的对称密钥加密算法. AES算法是一种迭代的对称密钥块密码,它支持128.192和256位的加密密钥(秘密密钥),以对128位的块中的数据进行加密和解密. 在AES中生成密钥的方法有两种:从随机数生成或从给定密码生成. 在第一种方法中,应该从像SecureRandom类这样的加密安全(伪)随机数生

  • java使用RSA与AES加密解密的实例代码详解

    首先了解下,什么是堆成加密,什么是非对称加密? 对称加密:加密与解密的密钥是相同的,加解密速度很快,比如AES 非对称加密:加密与解密的秘钥是不同的,速度较慢,比如RSA •先看代码(先会用在研究) 相关依赖: <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.58</versio

  • Python实现aes加密解密多种方法解析

    引子: 在windows中python3使用 pycryptodemo 模块实现Aes加密解密.Aes加密有多种方式,自己可以上网了解下. AES是每16位一加密,并且保证key和vi都是16位的.废话不多说直接上代码. import base64 from Crypto.Cipher import AES from binascii import b2a_hex,a2b_hex class PrpCrypt(object): def __init__(self,key,iv): self.ke

  • Java SHA-256加密的两种实现方法详解

    本文实例讲述了Java SHA-256加密的两种实现方法.分享给大家供大家参考,具体如下: 最近在做注册的一个功能,密码要进行加密,一开始想用MD5加密,但是听说被破解了已经,于是想玩玩SHA-256加密.学习了下,总结两种方法供后面参考: 1.利用Apache的工具类实现加密: maven: <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifac

  • C#代码实现对AES加密解密

    ES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范.它被预期能成为人们公认的加密包括金融.电信和政府数字信息的方法. 本文实例为大家介绍C#实现对AES加密解密的详细代码,分享给大家供大家参考,具体内容如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cry

随机推荐