`
John_Kong19
  • 浏览: 276218 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java AES加密实例

阅读更多
package com.encrypt.hello;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class AES {

	private final static String algorithm = "AES";

	/**
	 * BASE64解密
	 * 
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static byte[] decryptBASE64(String key) throws Exception {
		return (new BASE64Decoder()).decodeBuffer(key);
	}

	/**
	 * BASE64加密
	 * 
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static String encryptBASE64(byte[] key) throws Exception {
		return (new BASE64Encoder()).encodeBuffer(key);
	}

	/**
	 * 加密
	 * 
	 * @param data
	 * @param rawKey
	 * @return
	 * @throws Exception
	 */
	public static String encrypt(String data, String rawKey) {
		byte[] key = rawKey.getBytes();
		// Instantiate the cipher
		try {
			SecretKeySpec skeySpec = new SecretKeySpec(key, algorithm);
			Cipher cipher = Cipher.getInstance(algorithm);
			cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

			byte[] encrypted = cipher.doFinal(data.getBytes());
			return encryptBASE64(encrypted);
		} catch (Exception e) {
			// App.log.info("AES", "获取加密串出错," + e.getMessage());
			return "";
		}

	}

	/**
	 * 解密
	 * 
	 * @param encrypted
	 * @param rawKey
	 * @return
	 */
	public static String decrypt(String encrypted, String rawKey) {
		try {
			byte[] tmp = decryptBASE64(encrypted);
			byte[] key = rawKey.getBytes();

			SecretKeySpec skeySpec = new SecretKeySpec(key, algorithm);
			Cipher cipher = Cipher.getInstance(algorithm);
			cipher.init(Cipher.DECRYPT_MODE, skeySpec);

			byte[] decrypted = cipher.doFinal(tmp);
			return new String(decrypted);
		} catch (Exception e) {
			// App.log.info("AES", "获取解密串出错," + e.getMessage());
			return "";
		}

	}

	public static void main(String[] args) throws Exception {
		String data = "00";
		String key = "0123456789123456";
		System.out.println("密钥为:" + key);
		long lStart = System.currentTimeMillis();
		// 加密
		String encrypted = encrypt(data, key);
		System.out.println("原文:" + data);
		System.out.println("加密后:" + encrypted);
		long lUseTime = System.currentTimeMillis() - lStart;
		System.out.println("加密耗时:" + lUseTime + "毫秒");

		System.out.println();
		// 解密
		lStart = System.currentTimeMillis();
		String decrypted = decrypt(encrypted, key);// 解密串
		System.out.println("解密后: " + decrypted);
		lUseTime = System.currentTimeMillis() - lStart;
		System.out.println("解密耗时:" + lUseTime + "毫秒");

	}
}
分享到:
评论

相关推荐

    java AES加密 解决加密过长非法异常问题

    在提供的两个文件`AES加密1.java`和`AES加密2.java`中,可能包含了上述两种方式的实现。它们可能涵盖了密钥生成、初始化向量(IV)的使用、不同加密模式的选择以及如何处理加密过程中可能遇到的异常。通过阅读和理解...

    java aes加密转换Base64 使用 CBC 解密模式

    java AES加密解密,使用 CBC 解密模式,EncryptByAes Aes加密 后 base64 再加 DecryptByAes Aes 解密,对 PKCS7 填充的数据进行反填充,对数据进行 PKCS7 填充 使用 CBC 解密模式, // aesDecrypt 解密 public ...

    AES加密.rar java Aes加密方式

    Java平台提供了丰富的库支持AES加密,使得开发人员可以方便地在Java应用程序中集成这种强大的加密技术。 在Java中实现AES加密,主要涉及到以下几个关键步骤和知识点: 1. 密钥生成:AES加密需要一个密钥来执行加...

    Java实现AES加密和解密算法

    在Java中实现AES(Advanced Encryption Standard)...总之,Java中的AES加密和解密涉及到密钥生成、密码器的使用以及数据的转换。在实现过程中,还需要考虑安全性、性能和兼容性等问题,确保加密算法的有效性和安全性。

    AES加密算法(java实现).zip_aes java_cmM0 解密_java aes加密 demo_js aes加密算法_

    `java_aes加密_demo`表示这是一个Java AES加密的示例项目,而`js_aes加密算法`表明还有JavaScript版本的AES加密实现。 这个压缩包文件可能包含了Java实现AES加密和解密的代码示例,适合初学者了解和学习AES加密的...

    AES.rar_AES_AES加密 java_AES算法_aes java_java aes

    AES加密过程** - **字节代换**:这是非线性的一步,每个字节通过一个固定的查找表进行替换,使得明文数据的初始模式发生改变。 - **行移位**:将128位的矩阵按行进行循环左移,不同轮的移动位数不同,增加了混淆...

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

    Java使用AES加密和解密的实例详解 Java使用AES加密和解密的实例详解主要介绍了Java使用AES加密和解密的实例详解的相关资料,需要的朋友可以参考下。 AES加密是一种对称的加密算法,可以基于相同的密钥进行加密和...

    AES加密算法的JAVA实现

    **AES加密算法** AES,全称为“Advanced Encryption Standard”,即高级加密标准,是目前广泛使用的...通过`secret`这个文件名,可能包含了具体实现AES加密的Java代码示例,你可以查阅这个文件以获得更详细的信息。

    android使用AES加密和解密文件实例代码

    Android 使用 AES 加密和解密文件实例代码 在 Android 应用程序中,使用 AES(Advanced Encryption Standard)加密和解密文件是一种常见的安全措施。本文将详细介绍 Android 使用 AES 加密和解密文件的实例代码,并...

    AES加密解密JAVA实现(带源码)

    在Java中实现AES加密需要导入`javax.crypto`和`javax.crypto.spec`包下的相关类库,例如: ```java import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import ...

    java AES 加密解密源码,集成了AWT 界面,源码直接打包成jar,可以运行

    本项目提供了一个集成了AWT界面的Java AES加密解密工具,方便开发者直接使用或集成到自己的项目中。 首先,我们要理解AES加密的基本原理。AES是一种块密码,它将明文分为128位的数据块进行处理,支持128、192、256...

    AES-test.rar_AES_AES加密 java_aes java_aes文本_java aes

    标签“aes加密_java aes_java aes文本 java_aes”表明这个示例可能涵盖了AES加密的基本概念,如何在Java代码中实现,以及如何处理文本数据。具体到“AES-test.rar”中的文件,可能包含了一个或多个Java源文件,这些...

    java实现的AES加密算法完整实例

    在Java中,AES加密通常通过Java Cryptography Extension (JCE)库来实现。以下是对给定的`AESCrypt`类的详细分析: 1. **初始化向量(IV)**: 在类`AESCrypt`中,初始化向量被硬编码为一个全零的16字节数组。在...

    Java AES加密

    在本文中,我们将深入探讨Java AES加密的原理、实现步骤以及如何在Android环境中应用。 首先,AES是一种块密码,它对128位的数据进行操作。它可以使用128、192或256位的密钥,但Java中的`javax.crypto`库默认只支持...

    JavaAES加密库.zip

    在"JavaAES加密库.zip"中,我们可能找到一个名为"alice-master"的项目,这可能是一个开源项目或代码示例,用于展示如何在Java中使用AES加密。"alice-master"通常表示这是一个Git仓库的主分支或者项目的主目录。 要...

    java 文字加密实例

    从给定的文件信息来看,虽然标题和描述都是“java文字加密实例”,但实际上代码示例并未涉及具体的加密算法或过程。然而,我们可以基于这个主题,深入探讨Java中的文本加密技术,包括其背景、原理以及常见加密算法的...

    AES加密算法示例,一个完整的maven项目

    本项目是一个基于Maven构建的Java示例,主要展示了如何在实际应用中使用AES加密算法。Maven是一个项目管理和综合工具,它可以帮助开发者管理项目依赖、构建、文档生成等任务,简化开发流程。 项目中的主类是实现AES...

    C#加密 解密对接java 的加密AES/CBC/PKCS7Padding 转16进制.rar

    总之,理解并掌握AES加密算法、CBC工作模式、PKCS7Padding以及在C#和Java之间的兼容性,是保证跨平台数据安全传输的关键。通过这个压缩包中的资源,你可以学习到如何在实际项目中应用这些技术。

    aes加密算法实例(自己试验用的)

    在本文中,我们将深入探讨AES加密算法的基本原理、工作方式以及如何通过实例来理解和应用它。 AES最初由比利时密码学家Joan Daemen和Vincent Rijmen设计,2001年被美国国家标准与技术研究所(NIST)采纳为新的联邦...

    java AES加密算法

    在Java中实现AES加密,你需要使用`javax.crypto`包中的类。以下是一个简单的AES加密和解密流程: 1. **生成密钥**:首先,你需要创建一个AES密钥。这通常通过`KeyGenerator`类完成,指定密钥大小,如`KeyGenerator....

Global site tag (gtag.js) - Google Analytics