`

Java实现AES算法

阅读更多

首先推荐一些类和接口的地址,你可以通过这些内容更好的了解下面的代码:

类 KeyGenerator:http://www.oschina.net/uploads/doc/javase-6-doc-api-zh_CN/javax/crypto/KeyGenerator.html

接口 SecretKey:http://www.oschina.net/uploads/doc/javase-6-doc-api-zh_CN/javax/crypto/SecretKey.html

类 SecretKeySpec:http://www.oschina.net/uploads/doc/javase-6-doc-api-zh_CN/javax/crypto/spec/SecretKeySpec.html

类 Cipher:http://www.oschina.net/uploads/doc/javase-6-doc-api-zh_CN/javax/crypto/Cipher.html

 

 

/*加密类:Encryption */

package com.hyit.AES.Java;

import java.io.UnsupportedEncodingException;
import java.security.*;

import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;


public class Encryption {
	public static byte[] encrypt(String content, String password) {   
        try {              
                KeyGenerator kgen = KeyGenerator.getInstance("AES"); //KeyGenerator提供(对称)密钥生成器的功能。使用getInstance 类方法构造密钥生成器。
           kgen.init(128, new SecureRandom(password.getBytes()));//使用用户提供的随机源初始化此密钥生成器,使其具有确定的密钥大小。
           SecretKey secretKey = kgen.generateKey();   
                byte[] enCodeFormat = secretKey.getEncoded();   
                SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");//使用SecretKeySpec类来根据一个字节数组构造一个 SecretKey,,而无须通过一个(基于 provider 的)SecretKeyFactory.
                Cipher cipher = Cipher.getInstance("AES");// 创建密码器   //为创建 Cipher 对象,应用程序调用 Cipher 的 getInstance 方法并将所请求转换 的名称传递给它。还可以指定提供者的名称(可选)。 
           byte[] byteContent = content.getBytes("utf-8");   
                cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化   
           byte[] result = cipher.doFinal(byteContent); //按单部分操作加密或解密数据,或者结束一个多部分操作。数据将被加密或解密(具体取决于此 Cipher 的初始化方式)。   
           System.out.println("加密后:"+result);
                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;   
	}  
}

 

 

 

/*解密类:Decryption*/

package com.hyit.AES.Java;

import java.security.*;

import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;

public class Decryption {
	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;   
	}  
}

 

 

/*测试类:Main*/

package com.hyit.AES.Java;

public class Main {
	public static void main(String[] args) {
		String content = "test";   
		String password = "12345678";   
		//加密   
		System.out.println("加密前:" + content);   
		byte[] encryptResult = Encryption.encrypt(content, password);
		//解密   
		byte[] decryptResult =Decryption.decrypt(encryptResult,password);   
		System.out.println("解密后:" + new String(decryptResult));  
	}

}

 

结果:

加密前:test

加密后:(此处不唯一)

加密后:test

 

分享到:
评论

相关推荐

    JAVA实现AES算法+界面.zip_AES_AES java 界面_Java Aes界面

    在本文中,我们将深入探讨如何使用Java语言实现AES(Advanced Encryption Standard)加密算法,并结合图形用户...这个"JAVA实现AES算法+界面.zip"文件可能包含了实现这些功能的详细教程或代码示例,值得进一步研究。

    密码学AES算法(JAVA版本)

    2. **Java实现AES算法**:通过Java编程语言实现AES算法的具体方法与步骤。 3. **AES算法的原理**:包括密钥扩展、加解密过程等核心概念。 4. **Java中的加密技术**:介绍Java中支持加密的相关库和技术。 5. **AES...

    AES加密算法(java)实现

    这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。...本软件是用java语言开发,实现了AES算法对文件的加密和解密,并在界面上加了进度条,来提示用户加密解密的进度。如果不足之处,欢迎留言。

    Java实现AES加密算法

    Java实现AES加密算法Java实现AES加密算法

    Java实现AES加密和解密算法

    在给定的代码示例中,AES算法被用于加密和解密字符串数据。 首先,了解AES加密的基本步骤: 1. **密钥生成**:AES加密需要一个密钥作为输入。在Java中,可以使用`KeyGenerator`类来生成密钥。`KeyGenerator....

    AES算法Java实现

    以上就是关于“AES算法Java实现”的核心知识点,包括AES的基本原理、Java中的实现方式、加密过程、不同模式的选择以及安全注意事项。这些内容可以帮助你构建一个基本的AES加密解密工具,并理解其背后的机制。

    JAVA实现AES加密算法代码.doc

    JAVA 实现 AES 加密算法代码 JAVA 实现 AES 加密算法代码是指使用 JAVA 语言来实现高级加密标准(Advanced Encryption Standard,AES)的加密算法。AES 已经变成目前对称加密中最流行算法之一,能够使用 128、192 ...

    JAVA实现AES加密算法.rar

    AES算法因其高效、安全性高以及易于实现的特点,在网络通信、数据存储、移动设备等多个领域得到了广泛应用。 AES的核心是基于替换和置换的混合操作,包括四个主要步骤:字节代换(SubBytes)、行位移(ShiftRows)...

    JS实现AES-GCM加密,java实现AES-GCM解密。.md

    在工作中会经常遇到密码加密,URL传参要进行加密,在此我参照一个例子将用java实现的AES加解密程序用实例写出。JS实现AES-GCM加密,java实现AES-GCM解密

    JAVA实现AES加密和解密

    1. `KeyGenerator`: 用于生成密钥,我们可以通过指定AES算法来创建16位的秘钥。 2. `Cipher`: 进行加密和解密操作的核心类,需要指定工作模式和填充方式。 3. `SecretKeySpec`: 用于将字节数组转换为秘钥对象。 ...

    JAVA版AES算法源码

    在Java中实现AES算法,可以用于数据的加密和解密,确保信息安全。本篇文章将详细解析`TestAES.java`文件中可能包含的AES算法源码,并深入探讨相关的Java编程与AES加密原理。 首先,AES算法基于Rijndael密码块结构,...

    java实现复杂的AES算法 源码

    在Java中实现AES算法,可以用于保护数据的隐私,例如在传输或存储敏感信息时。本篇文章将深入探讨如何在Java中实现AES加密和解密的源码,并解析其工作原理。 首先,AES的核心是128位的块操作,它使用相同的密钥进行...

    AES算法Java实现对文件加密

    在Java中实现AES算法,主要涉及到`javax.crypto`和`java.security`这两个核心包。首先,我们需要创建一个密钥,这通常包括生成密钥对(公钥和私钥)或随机生成密钥。在AES中,我们只用到一个密钥,因为它是对称加密...

    AES算法java实现

    在Java中实现AES算法通常涉及到以下几个关键步骤和概念: 1. 密钥生成:AES支持三种不同的密钥长度,128位、192位和256位。在Java中,我们可以使用`javax.crypto.KeyGenerator`类来生成这些密钥。例如,生成128位的...

    AES算法实现Java和JS互通加解密

    在IT行业中,尤其是在Web开发中,AES算法常用于确保数据在传输过程中的安全性,例如在客户端(JavaScript)与服务器端(Java)之间的通信。本主题将深入探讨如何在Java和JavaScript环境中实现AES加解密,并实现互通...

    java 实现aes加解密算法

    AES算法是在DES(Data Encryption Standard)的基础上发展起来的,具有更高的安全性,支持128位、192位和256位的密钥长度,而默认的密钥长度为128位。AES分为多个步骤:字节代换、行移位、列混淆和轮密钥添加,通过...

    AES.rar_AES_AES加密 java_AES算法_aes java_java aes

    **AES算法详解** AES,全称为“Advanced Encryption Standard”,即高级加密标准,是目前广泛使用的对称加密算法。它在2001年由NIST(美国国家标准与技术研究所)正式采纳,取代了之前的DES(数据加密标准)成为新...

    Java实现的对称加密算法AES定义与用法详解

    AES算法的核心思想是使用替代-置换网络来加密数据,确保数据的安全性。AES算法的密钥长度可以是128位、192位或256位,密钥越长,安全性越高。 二、AES的特点 AES算法的主要特点是: 1、高级的:AES算法是当前使用...

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

    // 使用AES算法,ECB模式,PKCS5填充 cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes()); ``` 这里`plaintext`是待加密的明文字符串。 3. **解密过程*...

    AES加密算法的JAVA实现

    AES算法有三种不同的密钥长度:128位、192位和256位,每种密钥长度对应的加密轮数不同,分别是10轮、12轮和14轮。加密过程主要包括四个基本操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)...

Global site tag (gtag.js) - Google Analytics