- 浏览: 54031 次
- 性别:
- 来自: 洛阳
文章分类
最新评论
这个其实是我们项目里面的一个工具类,给大家做一下分享
aes工具类如下:
aes工具类如下:
package com.*; import java.net.URLEncoder; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class AesUtil { private static BASE64Encoder base64Encoder; private static BASE64Decoder base64Decoder; private static IvParameterSpec iv; private static String CipherType = "AES/CBC/PKCS5Padding"; //"算法/模式/补码方式 static { base64Decoder = new BASE64Decoder(); base64Encoder = new BASE64Encoder(); iv = new IvParameterSpec("0102030405060708".getBytes());//使用CBC模式,需要一个向量iv,可增加加密算法的强度 } // 加密 public static String Encrypt(String sSrc,String sKey) throws Exception { if (sKey == null) { System.out.print("Key为空null"); return null; } // 判断Key是否为16位 if (sKey.length() != 16) { System.out.print("Key长度不是16位"); return null; } byte[] raw = sKey.getBytes("UTF-8"); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance(CipherType); cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv); byte[] encrypted = cipher.doFinal(sSrc.getBytes("UTF-8")); return base64Encoder.encode(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。 } // 解密 public static String Decrypt(String sSrc,String sKey) throws Exception { /*sSrc = new String(sSrc.getBytes(),"UTF-8");*/ try { // 判断Key是否正确 if (sKey == null) { System.out.print("Key为空null"); return null; } // 判断Key是否为16位 if (sKey.length() != 16) { System.out.print("Key长度不是16位"); return null; } byte[] raw = sKey.getBytes("UTF-8"); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance(CipherType); cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv); byte[] encrypted1 = base64Decoder.decodeBuffer(sSrc);//先用base64解密 try { byte[] original = cipher.doFinal(encrypted1); return new String(original,"UTF-8"); } catch (Exception e) { System.out.println(e.toString()); return null; } } catch (Exception ex) { System.out.println(ex.toString()); return null; } } public static void main(String[] args) throws Exception { System.out.println(Encrypt("hello,word","11asd11111111111")); System.out.println(Decrypt(String.valueOf("qmesIijZCkQ8YL6GN1YEiQ=="),"11asd11111111111")); } }
发表评论
-
Condition
2017-01-03 16:58 0condition的应用 -
java对sftp文件进行上传、下载、删除等操作,附详细demo
2016-12-22 18:01 2077这是自己总结的一个类,包含连接sftp,上传,下载等操作,附件 ... -
servlet监听器功能讲解及代码案例
2017-07-08 16:54 614servlet监听器功能讲解及代码案例 监听器的功能很强大, ... -
web.xml之session超时设置 以及设置session超时的几种方法
2016-10-20 16:39 1178web.xml之session超时设置 先说正题,web. ... -
web.xml之过滤器详解 以及常用过滤器demo
2016-10-20 14:15 2698web.xml之过滤器详解 一 ... -
poi导出excel清晰 步骤详解
2016-10-14 14:08 840poi导出excel清晰 步骤详解 一、本次生成excel ... -
struts2下载文件最简化版清晰详解
2016-10-14 11:20 610struts2下载文件最简化版清晰详解 一、应用场景如下: ... -
poi解析excel步骤详解
2016-10-14 10:42 2112poi解析excel步骤详解 一、本次解析excel应用场景 ... -
struts2文件上传详解
2016-10-13 11:26 804struts2文件上传详解 一、jsp代码 <fo ... -
ThreadLocal用法详解
2016-09-29 10:44 1597ThreadLocal用法详解 1.ThreadLocal的 ... -
JSONObject、JSONArray、xml的常用操作
2016-09-28 16:33 1359JSONObject、JSONArray、xml的常用操作 ... -
Rsa签名算法详解
2016-09-22 09:48 4621Rsa签名算法详解 签名生成规则与验证签名规则如下: ... -
Quartz定时任务的实现及详解
2016-09-21 18:03 2136Quartz定时任务的实现及详解 平常工作中经常遇到写定时任 ... -
四种线程池的特性以及测试代码
2016-09-21 09:20 901四种线程池的特点如下 ... -
操作json
2016-09-18 13:01 624总是记不住一些零碎的知识点,这次开个专栏来记录,不定期更新: ... -
日期类型转换
2016-09-18 12:50 531总是记不住一些零碎的知识点,这次开个专栏来记录,不定期更新: ... -
配置文件的读取与写入
2016-09-14 17:00 645读取配置文件: public static void m ... -
HttpPoster接口调用
2016-09-13 13:47 1616工作中经常用到的东西,这也是自己在公司的基础上改造的,感觉挺好 ... -
md5加密
2016-09-13 13:39 593md5工具类如下所示,可以直接拿走用,分享记录一下 pack ... -
循环map取值的方法
2016-09-08 13:00 1540循环map取值的方法,如下所示: 方法一: Map< ...
相关推荐
AES加密与解密是信息安全领域中的重要技术,用于保护数据的隐私性和安全性。AES,全称为Advanced Encryption Standard,中文名为高级加密标准,是目前广泛采用的对称加密算法。本资源是一个基于Visual Studio 2008和...
这个程序应当包含了上述知识点的具体应用,你可以通过阅读源代码、编译和运行来进一步理解和学习AES加密解密的实现细节。这个实战例程可以帮助开发者更好地掌握Qt环境下的加密解密操作,提高数据安全保护能力。
《AES加密解密实验报告》 AES,全称为高级加密标准(Advanced Encryption Standard),是密码学领域中的一个重要标准,由美国联邦政府采纳,用于替换原有的DES加密算法。AES由比利时密码学家Joan Daemen和Vincent ...
AES加密与解密 可设置如 CipherMode.ECB PaddingMode.PKCS7 与线上加解密结果一致
Android 使用 AES 加密和解密文件实例代码 在 Android 应用程序中,使用 AES(Advanced Encryption Standard)加密和解密文件是一种常见的安全措施。本文将详细介绍 Android 使用 AES 加密和解密文件的实例代码,并...
总之,虽然Qt本身不内置AES加密,但结合第三方库和Qt的现有组件,我们可以方便地实现AES加密和解密,为应用程序提供必要的安全保护。在开发过程中,务必遵循最佳实践,确保数据的完整性和安全性。
在C#中,可以使用System.Security.Cryptography命名空间下的Aes类来实现AES加密和解密。AES的工作模式有ECB(电子密码本)、CBC(链式密码本)、CFB(密文反馈)等,其中CBC模式常用于确保数据的完整性。加密过程...
在C++中实现AES加密和解密,通常会利用已有的库,如OpenSSL、Crypto++等。这些库提供了API接口,使得开发者能够方便地在C++程序中集成AES功能。例如,OpenSSL中的`EVP_EncryptInit_ex()`、`EVP_EncryptUpdate()`和`...
AES加密解密的C语言源代码能在Keil C51环境下运行,意味着开发者可以将加密模块整合到51单片机的应用程序中。 **STM32** 是意法半导体公司推出的一种基于ARM Cortex-M内核的微控制器系列,其性能强大且功耗低,广泛...
然而,仅依赖AES加密可能不够安全,因为如果攻击者获取到相同的密钥,他们就能解密数据。因此,通常会结合密钥管理策略,如使用密钥派生函数(KDFs)或密钥协商协议,以及使用非对称加密(如RSA)来安全地交换AES...
在加密/解密单文件页面下按下回车键,软件会根据你在按回车键之前最近的几次操作(如:更改待加密文件路径或待解密文件路径或解密后文件的扩展名等等)来自动调用加密与解密函数以实现加密或解密的功能;在加密/解密...
总的来说,理解并正确使用Java实现AES加密和解密,需要注意秘钥的生成、工作模式的选择、填充方式以及字符编码的一致性,这样才能确保数据的安全传输和正确解密。通过实际操作和实践,你可以更深入地掌握这些知识点...
而“AesCode”可能是一个源代码文件,包含了具体实现AES加密解密功能的C++代码。分析这个代码可以帮助我们理解AES在VC6.0下的具体实现细节,如函数定义、调用流程等。 总的来说,AES加密/解密算法在MFC下的实现涉及...
在MATLAB环境中实现AES加密和解密算法是一项重要的技能,特别是在教学和科研中。MATLAB2019a版本提供了丰富的数学计算功能,使得实现这种复杂的算法变得相对简单。 AES的核心过程包括四个基本操作:字节代换...
压缩包中的“AES加密_解密_verilog代码.docx”文件很可能是详细介绍了如何用Verilog编写AES加密解密模块的文档,包括具体的代码示例和设计说明。阅读这份文档可以帮助你理解AES算法在Verilog中的实现细节,以及如何...
本教程将通过"AES加密和解密Demo"这个实例,深入探讨AES的工作原理、实现过程以及如何在实际应用中进行加密和解密。 **AES加密算法简介** AES是由比利时密码学家Joan Daemen和Vincent Rijmen设计的,2001年被美国...
在本项目中,"用C语言实现的AES加密解密算法"是针对AES算法的一种C语言实现,这允许开发者在不依赖特定库的情况下,在C环境中进行数据的加密和解密操作。 首先,我们需要理解AES的工作原理。AES的核心是基于替换和...
总的来说,这个资源为Delphi开发者提供了一种实现AES加密解密的方式,并且保证了与Java平台的兼容性。通过理解和应用这些代码,开发者可以增强他们的应用程序在数据安全方面的性能,同时也能更好地与其他Java应用...