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 + "毫秒");
}
}
分享到:
相关推荐
在提供的两个文件`AES加密1.java`和`AES加密2.java`中,可能包含了上述两种方式的实现。它们可能涵盖了密钥生成、初始化向量(IV)的使用、不同加密模式的选择以及如何处理加密过程中可能遇到的异常。通过阅读和理解...
java AES加密解密,使用 CBC 解密模式,EncryptByAes Aes加密 后 base64 再加 DecryptByAes Aes 解密,对 PKCS7 填充的数据进行反填充,对数据进行 PKCS7 填充 使用 CBC 解密模式, // aesDecrypt 解密 public ...
Java平台提供了丰富的库支持AES加密,使得开发人员可以方便地在Java应用程序中集成这种强大的加密技术。 在Java中实现AES加密,主要涉及到以下几个关键步骤和知识点: 1. 密钥生成:AES加密需要一个密钥来执行加...
在Java中实现AES(Advanced Encryption Standard)...总之,Java中的AES加密和解密涉及到密钥生成、密码器的使用以及数据的转换。在实现过程中,还需要考虑安全性、性能和兼容性等问题,确保加密算法的有效性和安全性。
`java_aes加密_demo`表示这是一个Java AES加密的示例项目,而`js_aes加密算法`表明还有JavaScript版本的AES加密实现。 这个压缩包文件可能包含了Java实现AES加密和解密的代码示例,适合初学者了解和学习AES加密的...
AES加密过程** - **字节代换**:这是非线性的一步,每个字节通过一个固定的查找表进行替换,使得明文数据的初始模式发生改变。 - **行移位**:将128位的矩阵按行进行循环左移,不同轮的移动位数不同,增加了混淆...
Java使用AES加密和解密的实例详解 Java使用AES加密和解密的实例详解主要介绍了Java使用AES加密和解密的实例详解的相关资料,需要的朋友可以参考下。 AES加密是一种对称的加密算法,可以基于相同的密钥进行加密和...
**AES加密算法** AES,全称为“Advanced Encryption Standard”,即高级加密标准,是目前广泛使用的...通过`secret`这个文件名,可能包含了具体实现AES加密的Java代码示例,你可以查阅这个文件以获得更详细的信息。
Android 使用 AES 加密和解密文件实例代码 在 Android 应用程序中,使用 AES(Advanced Encryption Standard)加密和解密文件是一种常见的安全措施。本文将详细介绍 Android 使用 AES 加密和解密文件的实例代码,并...
在Java中实现AES加密需要导入`javax.crypto`和`javax.crypto.spec`包下的相关类库,例如: ```java import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import ...
本项目提供了一个集成了AWT界面的Java AES加密解密工具,方便开发者直接使用或集成到自己的项目中。 首先,我们要理解AES加密的基本原理。AES是一种块密码,它将明文分为128位的数据块进行处理,支持128、192、256...
标签“aes加密_java aes_java aes文本 java_aes”表明这个示例可能涵盖了AES加密的基本概念,如何在Java代码中实现,以及如何处理文本数据。具体到“AES-test.rar”中的文件,可能包含了一个或多个Java源文件,这些...
在Java中,AES加密通常通过Java Cryptography Extension (JCE)库来实现。以下是对给定的`AESCrypt`类的详细分析: 1. **初始化向量(IV)**: 在类`AESCrypt`中,初始化向量被硬编码为一个全零的16字节数组。在...
在本文中,我们将深入探讨Java AES加密的原理、实现步骤以及如何在Android环境中应用。 首先,AES是一种块密码,它对128位的数据进行操作。它可以使用128、192或256位的密钥,但Java中的`javax.crypto`库默认只支持...
本项目是一个基于Maven构建的Java示例,主要展示了如何在实际应用中使用AES加密算法。Maven是一个项目管理和综合工具,它可以帮助开发者管理项目依赖、构建、文档生成等任务,简化开发流程。 项目中的主类是实现AES...
在"JavaAES加密库.zip"中,我们可能找到一个名为"alice-master"的项目,这可能是一个开源项目或代码示例,用于展示如何在Java中使用AES加密。"alice-master"通常表示这是一个Git仓库的主分支或者项目的主目录。 要...
从给定的文件信息来看,虽然标题和描述都是“java文字加密实例”,但实际上代码示例并未涉及具体的加密算法或过程。然而,我们可以基于这个主题,深入探讨Java中的文本加密技术,包括其背景、原理以及常见加密算法的...
总之,理解并掌握AES加密算法、CBC工作模式、PKCS7Padding以及在C#和Java之间的兼容性,是保证跨平台数据安全传输的关键。通过这个压缩包中的资源,你可以学习到如何在实际项目中应用这些技术。
在本文中,我们将深入探讨AES加密算法的基本原理、工作方式以及如何通过实例来理解和应用它。 AES最初由比利时密码学家Joan Daemen和Vincent Rijmen设计,2001年被美国国家标准与技术研究所(NIST)采纳为新的联邦...
在Java中实现AES加密,你需要使用`javax.crypto`包中的类。以下是一个简单的AES加密和解密流程: 1. **生成密钥**:首先,你需要创建一个AES密钥。这通常通过`KeyGenerator`类完成,指定密钥大小,如`KeyGenerator....