预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】 2012-11-0218:47:58HYPERLINK"http://www.2cto.com/kf/201211/165570.html#comment_iframe"我来说两句作者:尐桀 HYPERLINK"javascript:;"收藏HYPERLINK"http://www.2cto.com/index.php?m=member&c=content&a=publish&modid=1&siteid=1"我要投稿 由于本人小菜,开始对AES加密并不了解,在网络上花了比较多时间查阅资料整理; 先简单从百度找来介绍: 1密码学中的高级加密标准(AdvancedEncryptionStandard,AES),又称高级加密标准Rijndael加密法, 2是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界 3所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日 4发布于FIPSPUB197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密 5中最流行的算法之一。该算法为比利时密码学家JoanDaemen和VincentRijmen所设计,结合两位作者的名 6字,以Rijndael之命名之,投稿高级加密标准的甄选流程。(Rijdael的发音近于"Rhinedoll"。) AES加密模式和填充方式(其实还有还几种填充方式没写上,开始时候也在这里绕了一下) 01算法/模式/填充16字节加密后数据长度不满16字节加密后长度 02AES/CBC/NoPadding16不支持 03AES/CBC/PKCS5Padding3216 04AES/CBC/ISO10126Padding3216 05AES/CFB/NoPadding16原始数据长度 06AES/CFB/PKCS5Padding3216 07AES/CFB/ISO10126Padding3216 08AES/ECB/NoPadding16不支持 09AES/ECB/PKCS5Padding3216 10AES/ECB/ISO10126Padding3216 11AES/OFB/NoPadding16原始数据长度 12AES/OFB/PKCS5Padding3216 13AES/OFB/ISO10126Padding3216 14AES/PCBC/NoPadding16不支持 15AES/PCBC/PKCS5Padding3216 16AES/PCBC/ISO10126Padding3216 更多关于加密模式内容:http://blog.sina.com.cn/s/blog_679daa6b0100zmpp.html 看到这么多模式,已经有点头晕了,那我的目标是希望找到PHP、Javascript、Java、C#的AES加密模式一个交集; 又经过一轮查找,资讯了百度谷歌这两位老师之后,找到了一篇关于PHP和Java的AES互通兼容加密文章,看完之后 发现了原来PHP的AES加密填充只有ZeroPadding(补零-因为数据长度不是16的整数倍就需要填充),而Java是没 有这种填充模式,杯具的只能自己写一个了,那Java的填充模式就用NoPadding(不填充内容); Java端代码: 01/* 02*Tochangethistemplate,chooseTools|Templates 03*andopenthetemplateintheeditor. 04*/ 05 06/** 07* 08*@authorJacker 09*/ 10 11importjavax.crypto.Cipher; 12importjavax.crypto.spec.IvParameterSpec; 13importjavax.crypto.spec.SecretKeySpec; 14importsun.misc.BASE64Decoder; 15 16publicclassEncryption 17{ 18publicstaticvoidmain(Stringargs[])throwsException{ 19System.out.println(encrypt()); 20System.out.println(desEncrypt()); 21} 22 23publicstaticStringencrypt()throwsException{ 24try{ 25Stringdata="TestString"; 26Stringkey="123456781234567