- 浏览: 1324971 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (896)
- spring4 (14)
- hibernate3 (26)
- spring2 (35)
- struts2 (55)
- struts1 (15)
- 设计模式 (15)
- java (172)
- mybatis3 (11)
- sql (17)
- mysql (13)
- jbpm (10)
- J2EE (45)
- tools (29)
- js (83)
- 数据结构 (13)
- Html (26)
- web (22)
- flex (33)
- Oracle (57)
- linux (49)
- 算法 (6)
- 其它 (12)
- easyui (1)
- bootstrap (13)
- xml (2)
- tomcat (1)
- redis (10)
- activemq (2)
- webservice (11)
- maven (2)
- springboot (1)
- ubuntu (1)
- python (14)
- rocketmq (1)
- springcloud (10)
- opencv (1)
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
对称加密、解密
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* AES加解密
*/
public class AES {
/**
* 密钥算法
*/
private static final String ALGORITHM = "AES";
/**
* 加解密算法/工作模式/填充方式
*/
private static final String ALGORITHM_STR = "AES/ECB/PKCS5Padding";
/**
* SecretKeySpec类是KeySpec接口的实现类,用于构建秘密密钥规范
*/
private SecretKeySpec key;
public AES(String hexKey) {
key = new SecretKeySpec(hexKey.getBytes(), ALGORITHM);
}
/**
* AES加密
* @param data
* @return
* @throws Exception
*/
public String encryptData(String data) throws Exception {
Cipher cipher = Cipher.getInstance(ALGORITHM_STR); // 创建密码器
cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化
return new BASE64Encoder().encode(cipher.doFinal(data.getBytes()));
}
/**
* AES解密
* @param base64Data
* @return
* @throws Exception
*/
public String decryptData(String base64Data) throws Exception{
Cipher cipher = Cipher.getInstance(ALGORITHM_STR);
cipher.init(Cipher.DECRYPT_MODE, key);
return new String(cipher.doFinal(new BASE64Decoder().decodeBuffer(base64Data)));
}
/**
* hex字符串 转 byte数组
* @param s
* @return
*/
private static byte[] hex2byte(String s) {
if (s.length() % 2 == 0) {
return hex2byte (s.getBytes(), 0, s.length() >> 1);
} else {
return hex2byte("0"+s);
}
}
private static byte[] hex2byte (byte[] b, int offset, int len) {
byte[] d = new byte[len];
for (int i=0; i<len*2; i++) {
int shift = i%2 == 1 ? 0 : 4;
d[i>>1] |= Character.digit((char) b[offset+i], 16) << shift;
}
return d;
}
public static void main(String[] args) throws Exception {
AES util = new AES("abcdefghijklmnop"); // 公开密钥
System.out.println("cardNo:"+util.encryptData("1234_abcd")); // 加密
System.out.println("exp:"+util.decryptData("Qd05HTY/pEPi2h9+PFXN9g==")); // 解密
}
}
发表评论
-
服务端推送multipart/x-mixed-replace
2023-12-07 15:26 414往网页分批推送数据:boundary=END,总头--> ... -
使用httpclient提交post请求
2020-08-22 08:35 480import org.apache.http.HttpEnt ... -
Groovy超强的Java动态计算能力
2020-06-25 09:03 694//Groovy超强的Java动态计算能力 groovy-2. ... -
bsh(BeanShell)动态执行java代码
2020-06-25 07:59 994import java.util.Date; /** * B ... -
延时任务处理订单超时方案
2020-05-23 16:05 1010JDK的延迟队列 方案是利用JDK自带的DelayQueue ... -
HttpsURLConnection
2020-04-29 10:51 861import java.net.URL; import jav ... -
Log4j的ConversionPattern参数的格式含义
2020-04-22 14:23 512Log4j的ConversionPattern参数的格式含义 ... -
thread 的join
2020-04-16 18:02 423java里面也有这个方法,Java Thread中, join ... -
GZIPOutputStream压缩文件
2020-04-16 17:52 794import java.io.BufferedReader; ... -
软引用SoftReference的使用
2020-04-16 15:48 586软引用SoftReference的使用 SoftRefere ... -
Fastjson
2020-04-15 14:53 407import java.util.ArrayList; imp ... -
6位随机数
2020-04-14 09:47 810import org.apache.commons.lang. ... -
Java加密和数字签名
2020-04-14 09:38 423Java加密和数字签名 消息摘要 这是一种与消息认证码结合使 ... -
DES加密、解密
2020-04-02 16:42 436import java.security.SecureRand ... -
springboot中使用springmvc的拦截器-HandlerInterceptorAdapter
2018-12-13 16:04 1392springboot中使用springmvc的拦截器-Hand ... -
aspectj连接点
2018-12-13 15:55 604切点指示符 切点指示符 ... -
spring之AspectJ面向切面编程
2018-12-13 14:15 910spring之AspectJ面向切面编程 面向切面编程,实现 ... -
设计模式之策略模式
2018-05-30 21:17 562public class Person { priva ... -
使用反射将对象转Map
2018-05-27 17:33 731//使用反射将对象转Map<String, St ... -
设计模式之原型模式
2018-05-20 18:42 554/** * 原型设计模式:原型模式主要用于对象的复制 ...
相关推荐
AES/ECB/PKCS5Padding 算法,用于数据加密,实现方式为Java。AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准
这里的“C++和JAVA,AES/ECB/PKCS5Padding 互通”指的是使用相同的加密算法,即高级加密标准(AES)的电子密码本模式(ECB)和PKCS5填充(Padding)来实现两个不同平台之间的数据安全传输。AES是一种广泛使用的对称...
这个过程完全符合Java的AES/ECB/PKCS7Padding加密方式,可以与Java代码无缝对接。 在实际应用中,为了提高安全性,建议使用更复杂的加密模式如CBC(Cipher Block Chaining)或CFB(Cipher Feedback),并且可以使用...
在描述中提到的“AES/ECB/PKCS5Padding”是指AES加密算法的一个特定模式和填充方式。 **ECB(电子密码本)**是AES加密的一种模式,是最简单的加密模式。在ECB模式下,输入的数据被分割成128位的块进行独立加密,不...
最近需要和银行pos做数据通讯,银行端算法为java实现的 AES/ECB/PKCS5PADDING我也改不了, c/c++这边实现ECB算法本来就少,PKCS5PADDING的更是没有,索性自己动手。工作原因c和java都得熟悉,因此把java端和c/c++...
AES/CBC/PKCS5Padding的加解密在多平台实现中都需要遵循相同的步骤,但具体的实现细节会因语言环境而略有不同。理解这些概念对于开发安全的应用程序至关重要,尤其是在涉及敏感数据传输和存储时。无论是在JavaScript...
本主题主要探讨的是如何使用C#实现加密和解密操作,以便与Java应用程序进行无缝对接,特别是使用AES/CBC/PKCS7Padding算法,并将结果转换为16进制表示。下面将详细阐述相关知识点。 **AES(Advanced Encryption ...
在描述中提到的“AES/CBC/PKCS5Padding”,分别代表了AES算法的不同部分: - AES:AES是高级加密标准,由NIST(美国国家标准与技术研究所)在2001年标准化,取代了之前的DES加密标准。它有三种不同尺寸的密钥,分别...
实现了AES/ECB/PKCS5Padding、AES/CBC/PKCS5Padding 密钥长度128/192/256bit,密钥0填充。是标准的AES算法,支持在线AES加解密网站互解。 本源码从CSDN一位前辈的源码基础上做了更改,增加支持加密返回BASE64,更加...
最近需要和银行pos做数据通讯,银行端算法为java实现的 AES/ECB/PKCS5PADDING我也改不了, c/c++这边实现ECB算法本来就少,PKCS5PADDING的更是没有,索性自己动手。工作原因c和java都得熟悉,因此把java端和c/c++...
AES-128 ECB pkcs5padding 是一种广泛使用的加密技术,主要应用于C++编程环境中的数据安全。本文将深入探讨AES(高级加密标准)、ECB(电子密码本)模式、PKCS5Padding(填充模式)以及它们在C++中的实现。 **AES ...
本文将详细讲解标题"Qt AES算法ECB模式 PKCS5Padding 128bit"所涉及的知识点,以及如何在Qt环境下实现AES加密解密。 **AES算法** AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的对称加密...
Java实现AES/CBC/PKCS7Padding加解密的方法是指使用Java语言实现AES对称加密算法的加解密过程,其中包括了加密和解密两个步骤。AES是一种对称加密算法,使用同一个密钥进行加密和解密操作。 在Java中,AES加解密...
我们关注的是使用AES(Advanced Encryption Standard)加密算法的一种特定实现,它在JAVA、Python和PHP三种编程语言中保持一致,支持任意长度的secret秘钥,并采用ECB(Electronic Codebook)模式和PKCS5Padding填充...
1. AES/ECB/PKCS5Padding C++实现,输出64位密文; 2.可以和java或是安卓等PKCS5Padding加密算法匹配;
最近需要和银行pos做数据通讯,银行端算法为java实现的 AES/ECB/PKCS5PADDING我也改不了, c/c++这边实现ECB算法本来就少,PKCS5PADDING的更是没有,索性自己动手。工作原因c和java都得熟悉,因此把java端和c/c++...
本文将详细介绍如何使用Java实现AES的加密和解密过程,特别是针对16位长度的秘钥,并解决加解密过程中可能出现的乱码问题。 首先,AES加密算法有多种工作模式,如ECB(Electronic Codebook)、CBC(Cipher Block ...
这两个环境都需要设置正确的初始化向量(IV),密钥以及选择AES/CBC/PKCS5Padding算法。 Delphi代码示例(简化版): ```delphi uses System.Security.Cryptography; var Cipher: TAESEncrypt; IV, Key: TBytes...