- 浏览: 69169 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
royboy:
徐风子 写道原来写这么绕就是为了实现一个单体模式呀。 唉,维护 ...
个人较为喜欢单例实现方式 -
徐风子:
原来写这么绕就是为了实现一个单体模式呀。 唉,维护起来真头疼。 ...
个人较为喜欢单例实现方式
接上篇,这次写个AES加密的实例,作为DES加密的替代者,它更加安全,使用也较为广泛。
AES加密工具类:
package com.royboy.encrypt; import java.security.Key; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class AESEncrypt { /** *密钥算法 */ private static final String KEY_ALGORITHM = "AES"; /** * 加密、解密算法/工作模式/填充方式 */ private static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding"; /** * 得到密钥 * @return */ public static byte[] initKey() throws Exception{ //实例化密钥生成器 KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM); /* * 初始化 * 如需要256位的密钥需要无政策限制权限文件或者用Bouncy Castle提供的算法 * */ kg.init(128); //生成密钥 SecretKey secretKey = kg.generateKey(); //获得二进制编码的密钥 return secretKey.getEncoded(); } /** * 封装密钥 * @param key 二进制密钥 * @return */ private static Key decorateKey(byte[] key){ //实例化密钥材料 SecretKey secretKey = new SecretKeySpec(key,KEY_ALGORITHM); return secretKey; } /** * 加密数据 * @param data 加密前的数据 * @param key 密钥 * @return 加密后的数据 */ public static byte[] encryptData(byte[] data,byte[] key) throws Exception{ Key k = decorateKey(key); //实例化 Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); //实始化,设置为加密模式 cipher.init(Cipher.ENCRYPT_MODE, k); return cipher.doFinal(data); } /** * 解密数据 * @param data 加密的数据 * @param key 密钥 * @return 解密后的数据 */ public static byte[] decryptData(byte[] data,byte[] key) throws Exception{ Key k = decorateKey(key); Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); //实始化,设置为解密模式 cipher.init(Cipher.DECRYPT_MODE, k); return cipher.doFinal(data); } }
AES加密测试类:
package com.royboy.encrypt; import org.junit.Test; import static org.junit.Assert.*; import com.sun.org.apache.xml.internal.security.utils.Base64; public class AESTester { /** * AES数据加/解密测试 * @throws Exception */ @Test public final void test() throws Exception{ String primevalData = "《孙子兵法》 《春秋战国》"; byte[] data = primevalData.getBytes(); System.out.println("原始内容:"+primevalData); //得到密钥 byte[] key = AESEncrypt.initKey(); System.out.println("加密密钥:"+Base64.encode(key)); byte[] encrypt = AESEncrypt.encryptData(data, key); System.out.println("加密数据:"+Base64.encode(encrypt)); byte[] decrypt = AESEncrypt.decryptData(encrypt, key); String decryptStr = new String(decrypt); System.out.println("解密数据:"+decryptStr); assertEquals(primevalData,decryptStr); } }
发表评论
-
HashMap 你了解多少
2014-03-10 21:47 914HashMap是如何存放对象 ... -
关于LIST的使用
2012-08-04 23:19 175LIST的接口是使用 ... -
关于枚举的使用
2012-04-16 13:32 0关于枚举的个人看法 -
SQL 变量赋值问题
2011-06-14 16:29 326在SQL中,关于变量赋值有要注意的地方 示例1 DE ... -
DES加密实例
2011-05-04 17:54 2286最近在学习加密解密的相关知识,为了加强记忆,参照一些资料写了些 ... -
加快Gmail对POP3邮件的访问频繁
2010-12-22 13:54 709Gmail,发现了它很多不错的地方,现在也将其他邮 ... -
反射代理下取用户真实IP
2010-12-16 09:18 317通常通过request.getRemoteAddr() 取得客 ... -
Berkeley DB Java Edition
2010-07-23 15:39 702一、 简介 Ber ... -
Berkeley DB Java Edition 基本示例
2010-07-23 15:38 610package test;import com.sleepyc ... -
个人较为喜欢单例实现方式
2010-04-14 18:00 1039有很多单例模式的实现例子,它的实现方式也是多种,什么“饿汉” ... -
再议JAVA路径问题
2009-09-09 10:47 313最近研究了JAVA路径相关的文章,可还是没解决我所遇到的问题的 ... -
CSS控制文本长度
2009-07-22 17:03 632<div style="width:200;t ... -
产生随机数的工具类
2009-07-15 13:38 285import java.util.Random; pub ... -
javascript与剪贴板交互
2009-06-11 16:55 10691.怎样操作剪贴板,从而实现复制、剪切与粘贴?同时判断剪贴板里 ... -
Applet通过数字签名授予访问本地资源
2009-06-01 16:48 712最近之好公司项目正好遇到需要用Applet做一个网页的Ftp上 ... -
Jquery对表单的一些操作
2009-05-26 09:13 3401.取下拉菜单选中项的文本 $("#select o ... -
请教:CMS开发的相关问题
2009-03-04 15:36 354公司是做视音视点播直播系统的,原来有一个相应的资源 ... -
dom4j 输出UTF-8 XML时中文乱码
2009-02-24 14:29 3081使用DOM4J的XMLWriter输出UTF-8编码的 ... -
较为常用的正则表达式
2009-02-05 09:08 213正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总 ... -
数据库操作类
2007-11-07 23:28 1937java 代码 package ...
相关推荐
AES(Advanced Encryption Standard)是一种广泛使用的块加密标准,由美国国家标准...这个实例解析提供了一个基本的AES加密和解密流程,实际应用中可能还需要考虑如错误处理、密钥管理、数据完整性校验等更多复杂因素。
Delphi AES加密算法实例程序,包括了加密算法的接口应用,包含 2 个过程和 2 个字符加密函数,支持 128 位密匙加密和解密字符串。重新修改加密模式,支持 128、192 和 256 位密匙加密。 改动函数参数表,添加 Key...
Android 使用 AES 加密和解密文件实例代码 在 Android 应用程序中,使用 AES(Advanced Encryption Standard)加密和解密文件是一种常见的安全措施。本文将详细介绍 Android 使用 AES 加密和解密文件的实例代码,并...
在处理加密过程中,可能会遇到“非法参数”异常,这通常是因为输入数据长度不符合AES加密的要求。AES加密算法有固定的数据块大小,对于AES-128,这个大小是16个字节(或128位)。当输入数据长度不是16字节的倍数时,...
这个类提供了创建、配置和管理AES加密实例的方法。 3. **AES加密步骤**: - **初始化**:首先需要创建一个`Aes`对象,并设置密钥和初始向量(IV)。密钥是决定加密强度的关键,而初始向量在CBC模式下是必要的。 -...
AES加密算法基于替换和置换的原理,它使用了固定的区块大小128位,并有三种密钥长度:128位、192位和256位。在AES加密过程中,数据被分为128位的数据块,然后经过多次的混合和轮变换,使得原始数据变得难以破解。 ...
**AES加密算法详解** AES(Advanced Encryption ...Visual C++实现的AES加密实例,让开发者能够直观地了解和使用这一强大的加密工具。通过学习和实践,我们可以更好地应对信息安全挑战,保护数据不被非法访问。
C++实现AES加密通常涉及到几个关键概念和步骤...综上所述,这个资源提供了C++环境下使用AES加密的实例,涵盖了从库的构建到实际应用的全过程,对于学习和理解AES加密技术以及在C++中如何实现和测试加密功能非常有价值。
在本文中,我们将深入探讨AES加密算法的基本原理、工作方式以及如何通过实例来理解和应用它。 AES最初由比利时密码学家Joan Daemen和Vincent Rijmen设计,2001年被美国国家标准与技术研究所(NIST)采纳为新的联邦...
**标题与描述解析** 标题和描述中提到的“qt5AES加密”是指使用Qt5框架实现的AES(Advanced Encryption..."Qt-AES"文件可能提供了在Qt5中实现AES加密的具体实例,对于理解和应用AES加密在Qt环境下的开发具有参考价值。
1. **AES类的实例化**:首先,需要创建一个AES加密器实例,设置密钥和初始化向量(IV)。密钥和IV是AES加密的重要参数,它们的长度根据所选的AES模式(如CBC、ECB等)有所不同,通常密钥应保持为128、192或256位。 ...
Java使用AES加密和解密的实例详解 Java使用AES加密和解密的实例详解主要介绍了Java使用AES加密和解密的实例详解的相关资料,需要的朋友可以参考下。 AES加密是一种对称的加密算法,可以基于相同的密钥进行加密和...
在Android应用中,AES加密通常用于保护数据的安全,例如存储敏感信息、网络通信中的数据传输等。C语言实现的AES加密算法能够提高执行效率,尤其是在处理大量数据时。 首先,我们需要了解AES加密的基本流程。AES包含...
Java平台提供了丰富的库支持AES加密,使得开发人员可以方便地在Java应用程序中集成这种强大的加密技术。 在Java中实现AES加密,主要涉及到以下几个关键步骤和知识点: 1. 密钥生成:AES加密需要一个密钥来执行加...
**AES加密解密详解** AES(Advanced Encryption Standard),即高级加密标准,是美国国家标准与技术研究所(NIST)制定的一种广泛使用的对称密钥加密算法。AES的核心是Rijndael算法,它满足了多项安全要求,包括...
**AES加密算法** AES,全称为“高级加密标准”(Advanced Encryption Standard),是目前广泛使用的对称加密算法,尤其在数据...如果你正在寻找一个快速了解和实践AES加密的实例,那么这个项目将是一个不错的选择。
总之,“C# AES加密解密小工具”是一个实用的开发辅助工具,它简化了AES加密和解密的过程,使开发者能够快速地为自己的应用程序添加数据加密功能。在实际应用中,为了提高安全性,可以考虑使用更安全的加密模式,如...
本文探讨了基于AES和SHA-256的Linux内核态数据加密方案,该方案结合AES加密算法和SHA-256哈希散列算法,实现了数据保护和密钥文件管理。该方案的关键点在于使用AES算法和SHA-256算法对数据进行加密,并使用Linux内核...
VB.NET实现AES加密解密代码,可直接使用