最近跟一个同事搞数据加密传输,加密算法用的是des,他用delphi做客户端,我用java做服务器。java做这个很简单,几句话就写好了,delphi没有现成的类库可以做这个,他从网上下载了一段代码。一开始很顺利,我的密文他能解,后来发现他的密文我解不了,这下抓瞎了。后来看des算法的介绍,水平有限,也看不出名堂来
不过反复看了几遍,看到一句“加密的数据不足64位,要补足64位”,突然就想到,会不会是补足的方式不同呢?
反正jce没有源代码,先从delphi看起,果然,在不足8位的时候,他下载的那段代码是用0来填充的。java填的是几呢? 虽然没有代码,还是可以穷举的,毕竟byte就256个数字,写了个循环,测试了一下,发现了,用“中国”做明文时补的是4个字节的4,用“Edit1”做明文,补充的就是3个字节的3,遂作恍然大悟状,这不是缺几个字节就补几吗。把delphi代码改了一下,果然没问题了,可是多测了几个明文之后,发现还是有不对的,dfadsfsdfsdfsdfsdakfjlfjsdlks这样的一段跟密文一样的明文,该如何找出问题来?
不过还好有jdk帮助文件,翻查了一下关于Cipher的几个类的说明,注意到了PKCS5Padding这个东西,google一下,恍然大悟,原来在恰好8个字节时还要补8个字节的8啊。
说白了,还是知识面太窄,对加密解密的东西不了解啊。
分享到:
相关推荐
公司有用C#写的AES代码 又有用JAVA AES CBC PKCS5Padding 加密的 但对于由JAVA AES CBC PKCS5Padding 加密的数据C++解密的资料极为稀缺 故本人找到了一些资源 同时改写了一些填充方式 使得与JAVA C#兼容 VS2010 测试...
AES-128 ECB pkcs5padding 是一种广泛使用的加密技术,主要应用于C++编程环境中的数据安全。本文将深入探讨AES(高级加密标准)、ECB(电子密码本)模式、PKCS5Padding(填充模式)以及它们在C++中的实现。 **AES ...
最近需要和银行pos做数据通讯,银行端算法为java实现的 AES/ECB/PKCS5PADDING我也改不了, c/c++这边实现ECB算法本来就少,PKCS5PADDING的更是没有,索性自己动手。工作原因c和java都得熟悉,因此把java端和c/c++...
PKCS5Padding(Public Key Cryptography Standards #5 Padding)是一种用于填充数据使其达到块大小整数倍的填充方式。在AES中,如果原始数据长度不是128位的整数倍,就需要添加填充位。PKCS5Padding会添加等于剩余...
在描述中提到的“AES/ECB/PKCS5Padding”是指AES加密算法的一个特定模式和填充方式。 **ECB(电子密码本)**是AES加密的一种模式,是最简单的加密模式。在ECB模式下,输入的数据被分割成128位的块进行独立加密,不...
在描述中提到的“AES/CBC/PKCS5Padding”,分别代表了AES算法的不同部分: - AES:AES是高级加密标准,由NIST(美国国家标准与技术研究所)在2001年标准化,取代了之前的DES加密标准。它有三种不同尺寸的密钥,分别...
PKCS5Padding(也称为PKCS7Padding,因为两者在填充方式上相同,只是针对不同字节长度的块)是一种广泛使用的填充方法。它在每个需要填充的字节位置填充其字节值,直到达到128位的边界。例如,如果需要填充5个字节,...
同时,我们也会提及PKCS5Padding,这是一种常用的填充方式,用于保证数据在加密过程中的完整性。 DES是一种块加密算法,由IBM于1970年代初期开发,后来被美国国家标准局采纳为标准。它使用56位的密钥对64位的数据块...
AES/ECB/PKCS5Padding 算法,用于数据加密,实现方式为Java。AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准
这里的“C++和JAVA,AES/ECB/PKCS5Padding 互通”指的是使用相同的加密算法,即高级加密标准(AES)的电子密码本模式(ECB)和PKCS5填充(Padding)来实现两个不同平台之间的数据安全传输。AES是一种广泛使用的对称...
轻松实现 Python AES和Java AES/ECB/PKCS5Padding互转
由于业务需求需要对接java接口,对方接口采用AES/ECB/PKCS5Padding加密技术,还经过,16进制转换,php端采用openssl加解密方式。调试可以访问http://tool.chacuo.net/cryptaes
本篇文章将深入探讨Delphi实现的3DES加密以及PKCS5Padding填充方法。 3DES,全称为三重数据加密标准(Triple Data Encryption Standard),是对原有的DES(Data Encryption Standard)算法的加强版。它通过三次应用...
由于业务需求需要对接java接口,对方接口采用AES/ECB/PKCS5Padding加密技术,还经过,16进制转换,当时花了不少时间,所以记录一下,你们可以根据你们的需求调整。
最近做一个接口,与JAVA的关于DES/CBC/PKCS5Padding 互相解密。在网上找了很多资料,摸索了3天才摸索出来。同样的明文,用JAVA加密的密文死活都跟用DELPHI加密的不相等,有时候少于8个字符的就正常,多了8个字符的就...
实现了AES/ECB/PKCS5Padding、AES/CBC/PKCS5Padding 密钥长度128/192/256bit,密钥0填充。是标准的AES算法,支持在线AES加解密网站互解。 本源码从CSDN一位前辈的源码基础上做了更改,增加支持加密返回BASE64,更加...
本项目基于C++编程语言,利用MFC(Microsoft Foundation Classes)框架实现了AES 128位加密,并结合了NoPadding和PKCS5Padding策略,为数据加密提供了可靠的支持。以下将详细讲解这些知识点。 **AES算法**: AES是...
此次AES文件只实现AES128-ECB加密方式,实现以PKCS5Padding填充方式,也可通用PKCS7Padding填充方式,也可自行修改实现NOPadding填充。以C语言方式实现加密方法,国际标准方式实现,可自行网上搜索在线验证方式验证...
标题 "Delphi10.2 DES/CBC/PKCS5Padding/UTF-8" 指的是使用 Delphi 10.2 开发的一个程序,该程序实现了数据加密标准(DES)算法,采用循环块密码(CBC)模式,并且使用PKCS5填充方式来处理边界情况,同时解决了在...
最近需要和银行pos做数据通讯,银行端算法为java实现的 AES/ECB/PKCS5PADDING我也改不了, c/c++这边实现ECB算法本来就少,PKCS5PADDING的更是没有,索性自己动手。工作原因c和java都得熟悉,因此把java端和c/c++...