- 浏览: 466075 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuan_bin1990:
您好,请问下demo如何运行啊,准备研究研究,但不知道入口啊。 ...
ssh2(struts2+spring2.5+hibernate3.3)自动生成代码程序 -
luyulong:
[b][/b][i][/i][ ...
jQuery进度条插件 jQuery progressBar -
txin0814:
mark..
读取文件目录 -
vurses:
[align=center][color=red][size= ...
include 与 jsp:include区别 -
Roshan2:
http://lijiejava.iteye.com/blog ...
Spring AOP 入门实例
AES加解密算法,使用Base64做转码以及辅助加密:
package com.wintv.common; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /******************************************************************************* * AES加解密算法 * * @author arix04 * */ public class AES { // 加密 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(); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");//"算法/模式/补码方式" IvParameterSpec iv = new IvParameterSpec("0102030405060708".getBytes());//使用CBC模式,需要一个向量iv,可增加加密算法的强度 cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv); byte[] encrypted = cipher.doFinal(sSrc.getBytes()); return new BASE64Encoder().encode(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。 } // 解密 public static String Decrypt(String sSrc, String sKey) throws Exception { 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("ASCII"); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); IvParameterSpec iv = new IvParameterSpec("0102030405060708" .getBytes()); cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv); byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);//先用base64解密 try { byte[] original = cipher.doFinal(encrypted1); String originalString = new String(original); return originalString; } 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 { /* * 加密用的Key 可以用26个字母和数字组成,最好不要用保留字符,虽然不会错,至于怎么裁决,个人看情况而定 * 此处使用AES-128-CBC加密模式,key需要为16位。 */ String cKey = "1234567890123456"; // 需要加密的字串 String cSrc = "Email : arix04@xxx.com"; System.out.println(cSrc); // 加密 long lStart = System.currentTimeMillis(); String enString = AES.Encrypt(cSrc, cKey); System.out.println("加密后的字串是:" + enString); long lUseTime = System.currentTimeMillis() - lStart; System.out.println("加密耗时:" + lUseTime + "毫秒"); // 解密 lStart = System.currentTimeMillis(); String DeString = AES.Decrypt(enString, cKey); System.out.println("解密后的字串是:" + DeString); lUseTime = System.currentTimeMillis() - lStart; System.out.println("解密耗时:" + lUseTime + "毫秒"); } }
AES加解密算法,使用byte2hex做转码:
package com.wintv.common; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /******************************************************************************* * AES加解密算法 * * @author arix04 * */ public class AES { // 加密 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(); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); IvParameterSpec iv = new IvParameterSpec("0102030405060708".getBytes()); cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv); byte[] encrypted = cipher.doFinal(sSrc.getBytes()); return byte2hex(encrypted).toLowerCase(); } // 解密 public static String Decrypt(String sSrc, String sKey) throws Exception { 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("ASCII"); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); IvParameterSpec iv = new IvParameterSpec("0102030405060708" .getBytes()); cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv); byte[] encrypted1 = hex2byte(sSrc); try { byte[] original = cipher.doFinal(encrypted1); String originalString = new String(original); return originalString; } catch (Exception e) { System.out.println(e.toString()); return null; } } catch (Exception ex) { System.out.println(ex.toString()); return null; } } public static byte[] hex2byte(String strhex) { if (strhex == null) { return null; } int l = strhex.length(); if (l % 2 == 1) { return null; } byte[] b = new byte[l / 2]; for (int i = 0; i != l / 2; i++) { b[i] = (byte) Integer.parseInt(strhex.substring(i * 2, i * 2 + 2), 16); } return b; } public static String byte2hex(byte[] b) { String hs = ""; String stmp = ""; for (int n = 0; n < b.length; n++) { stmp = (java.lang.Integer.toHexString(b[n] & 0XFF)); if (stmp.length() == 1) { hs = hs + "0" + stmp; } else { hs = hs + stmp; } } return hs.toUpperCase(); } public static void main(String[] args) throws Exception { /* * 加密用的Key 可以用26个字母和数字组成,最好不要用保留字符,虽然不会错,至于怎么裁决,个人看情况而定 */ String cKey = "1234567890123456"; // 需要加密的字串 String cSrc = "Email : arix04@xxx.com"; System.out.println(cSrc); // 加密 long lStart = System.currentTimeMillis(); String enString = AES.Encrypt(cSrc, cKey); System.out.println("加密后的字串是:" + enString); long lUseTime = System.currentTimeMillis() - lStart; System.out.println("加密耗时:" + lUseTime + "毫秒"); // 解密 lStart = System.currentTimeMillis(); String DeString = AES.Decrypt(enString, cKey); System.out.println("解密后的字串是:" + DeString); lUseTime = System.currentTimeMillis() - lStart; System.out.println("解密耗时:" + lUseTime + "毫秒"); } }
发表评论
-
javascript 打印指定区域
2010-11-18 16:34 1581javascript网页html 打印指定区域在一张网页里面, ... -
MyEclipse 8.5 开发环境配置,汉化,Aptana2.0插件,SVN 插件,Flex Builder 3/4 插件安装
2010-10-26 14:27 1544MyEclipse 8.5 开发环境配置,汉化,Aptana2 ... -
java读取properties文件
2010-10-11 13:43 762使用J2SE API读取Properties文件的六种方法 1 ... -
dbcp基本配置和重连配置
2010-09-28 09:29 2660最近在看一些dbcp的相 ... -
JAVA实现文件转移
2010-09-28 09:26 944/** * //1.从旧文件拷贝内容到新文件 ... -
Properties读取类
2010-09-25 14:06 945package cn.feigme.util; ... -
JAVA读写ftp
2010-09-21 16:41 3537import java.io.DataInputStream; ... -
apache tomcat mysql负载均衡和集群
2010-09-14 10:30 1689前言:公司开发了一个网站,估计最高在线人数是3万,并发人数最多 ... -
Flash Builder 4 正式版序列号
2010-09-01 15:51 3974江湖上又出现新的FlashBuilder(Flex4)序列号: ... -
利用 org.apache.commons.io.FileUtils快速读写文件
2010-08-17 10:33 2722利用 org.apache.commons.io.FileUt ... -
netbeans常用快捷键
2010-08-10 16:26 9061、Application应用程序的 ... -
ERWIN7.1注册码
2010-06-23 12:15 1358终于找到ERWIN7.1注册码,也可在ERWIN7.2上注册。 ... -
Java压缩文件zip
2010-06-21 09:42 1136可以使用jdk提供的java.util.zip包的类来进行文件 ... -
文件资源操作
2010-06-16 21:52 10841.访问文件资源 假设有一个文件地位于 ... -
Java Regex To Use
2010-06-16 21:46 805Java代码 /** * 得到 ... -
Java Random and Java Disabuse
2010-06-16 21:46 1122一、Random 1、创建Random ... -
java 线程池
2010-06-16 21:44 11521)threadpool.xml Java代码 ... -
使用ThreadLocal,隔离多个线程之间的共享冲突
2010-06-16 21:29 1540早在Java 1.2推出之时,Java平台中就引入了一个新的 ... -
MyEclipse下开发Web Service
2010-06-16 21:28 1524开发环境 Sun Java 5+ ... -
jexcel使用
2010-06-16 21:23 1453Java代码 package excel.jx ...
相关推荐
ASE加密是一种特定的加密算法,通常用于保护敏感数据的安全,比如在信息传输、存储或应用程序中。这个"ase.zip"压缩包包含的"ase加密源代码"和"信息加密案例",很可能是一个示例程序或者库,展示了如何使用ASE加密...
在这个场景下,“ase加密解密修复bug”指的是在编程过程中遇到的关于ASE加密解密的错误,需要进行调试和修复。 首先,我们需要理解ASE加密的基本原理。ASE采用对称加密算法,这意味着加密和解密使用的是同一密钥。...
**OpenSSL库与RSA、ASE加密** OpenSSL是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序供测试或其他目的使用。在信息安全领域,加密技术...
描述中提到的“接口Ase加密”可能是指提供了AES加密功能的API接口,允许开发者在程序中直接调用以实现数据加密。这样的接口通常会包含加密和解密两个方法,用户需要提供明文数据和密钥。使用时,先进行初始化,设置...
通过python代码实现ASE加密 解密的过程代码,逻辑简单,在pycharm下载相关依赖包之后可直接运行,适用于在api对接过程中或数据处理过程中有进行加解密的场景。
在IT行业中,安全加密是保护数据隐私和网络安全的关键技术之一。RSA和AES是两种常见的加密算法,它们在很多场景下被广泛使用。本教程将详细解释这两种加密算法以及如何在一个DEMO项目中结合使用它们。 **RSA算法** ...
AES Advanced Encryption 改进版
本篇文章将详细讲解如何在Java和.NET平台上利用ASE加密机制实现双语加解密,并介绍相应的工具类。 一、ASE加密机制原理 ASE加密算法基于对称密钥加密,它提供了高强度的安全性和快速的加密性能。该算法通常包括一个...
为了保证在蓝牙低功耗(BLE)通信中的数据安全性,文章详细介绍了如何在使用nrf51822和nrf52832蓝牙微控制器(MCU)上应用高级加密标准(AES)算法来加密传输数据。以下是关于nrf51822和nrf52832使用AES加密通信数据...
该算法加密后24位字符和符号的组合,相比较与RSA存储文本较少,相比于MD5该算法可逆,不会较多的占用数据库资源。加密和解密都在代码中,有需要的朋友可以看下
AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,它为数据提供了强大的安全保护,确保信息在传输或存储时不被未经授权的用户访问。AES在各种编程语言中都有实现,包括Objective-C、C#、Java和...
Linux操作系统上的C语言实现AES加密算法是一个常见的任务,特别是在数据安全和网络安全领域。AES,全称为Advanced Encryption Standard,是目前广泛采用的一种对称加密标准,它提供了强大的数据保护能力。在Linux...
在IT行业中,加密技术是确保数据安全的重要手段。在微信小程序开发中,为了保护用户敏感信息,如登录凭证、个人信息等,通常会采用加密技术。本篇将详细讲解微信小程序中使用AES(Advanced Encryption Standard)ECB...
**基于AES的CRT模式加密(C#实现)** 在信息安全领域,加密技术是保护数据隐私的重要手段。AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,它以其高效性和安全性著称。本项目中,我们关注的是...
在Java编程语言中,AES(Advanced Encryption Standard)是一种广泛应用的对称加密算法,用于保护数据的安全性。在处理加密过程中,可能会遇到“非法参数”异常,这通常是因为输入数据长度不符合AES加密的要求。AES...
这个动态库提供了AES加密和解密的功能,对于理解和应用AES技术具有重要意义。 AES的全称为高级加密标准,是由NIST(美国国家标准与技术研究院)在2001年正式采纳的,用于替代原先的DES(数据加密标准)。AES采用了...
1. ASE加密: ```java import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.util.Base64; byte[] keyBytes = "mySecretKey12345".getBytes("UTF-8"); SecretKeySpec keySpec = new ...
LABVIEW 资源,AES128加密子VI:Expand Key
在本文中,我们将深入探讨如何使用7-Zip软件进行ASE加密和解密,以及与之相关的知识点。 首先,7-Zip是一款免费且开源的文件压缩工具,它支持多种压缩格式,包括7z、ZIP、RAR等,并且提供了对AES-256加密的支持,这...
AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,它基于块密码,具有高安全性和高效性。在信息安全领域,AES被用作保护数据的秘密性,确保数据在传输或存储时不受非法访问。AES的加密过程包括多...