最近跟一个同事搞数据加密传输,加密算法用的是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 测试...
最近需要和银行pos做数据通讯,银行端算法为java实现的 AES/ECB/PKCS5PADDING我也改不了, c/c++这边实现ECB算法本来就少,PKCS5PADDING的更是没有,索性自己动手。工作原因c和java都得熟悉,因此把java端和c/c++...
AES/ECB/PKCS5Padding 算法,用于数据加密,实现方式为Java。AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准
轻松实现 Python AES和Java AES/ECB/PKCS5Padding互转
由于业务需求需要对接java接口,对方接口采用AES/ECB/PKCS5Padding加密技术,还经过,16进制转换,php端采用openssl加解密方式。调试可以访问http://tool.chacuo.net/cryptaes
本文使用开运库cryptopp,实现AES/CBC/PKCS5Padding/ 的加解密,希望能帮助到有需要的人
AES/CBC/PKCS5Padding,加密解决 支持javascript、java、iOS
des 及3des ecb pkcs5padding 加密 c++ 输出结果非base64及hex 加密结果验证 http://tool.chacuo.net/crypt3des
AES/ECB/PKCS5Padding C++实现
由于业务需求需要对接java接口,对方接口采用AES/ECB/PKCS5Padding加密技术,还经过,16进制转换,当时花了不少时间,所以记录一下,你们可以根据你们的需求调整。
实现了AES/ECB/PKCS5Padding、AES/CBC/PKCS5Padding 密钥长度128/192/256bit,密钥0填充。是标准的AES算法,支持在线AES加解密网站互解。 本源码从CSDN一位前辈的源码基础上做了更改,增加支持加密返回BASE64,更加...
此次AES文件只实现AES128-ECB加密方式,实现以PKCS5Padding填充方式,也可通用PKCS7Padding填充方式,也可自行修改实现NOPadding填充。以C语言方式实现加密方法,国际标准方式实现,可自行网上搜索在线验证方式验证...
关于C++和JAVA,AES/ECB/PKCS5Padding 互相通信的问题一点小见解和代码。 有需要的可以下载一下。
delphi版的3DES加密,采用ECB模式,pkcs5padding 填充,最近做第三方接口时用到的,生成的密文是16进制的,与网页验证ok
最近做一个接口,与JAVA的关于DES/CBC/PKCS5Padding 互相解密。在网上找了很多资料,摸索了3天才摸索出来。同样的明文,用JAVA加密的密文死活都跟用DELPHI加密的不相等,有时候少于8个字符的就正常,多了8个字符的就...
最近需要和银行pos做数据通讯,银行端算法为java实现的 AES/ECB/PKCS5PADDING我也改不了, c/c++这边实现ECB算法本来就少,PKCS5PADDING的更是没有,索性自己动手。工作原因c和java都得熟悉,因此把java端和c/c++...
c++ AES 加密
可运行的已测试的VS2012工程 实现了 MFC C++ AES 128bit NoPadding PKCS5Padding
JAVA解决AES ECB 模式下加密解密;附加国内三方AES加密网站---http://tool.chacuo.net/cryptaes;如有用解决您工作问题,烦请点个赞
根据原"与JAVA的关于DES/CBC/PKCS5Padding 互相解密" 代码修改,解决中文乱码问题。与在线加密网站结果一致