登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

图像处理 视频分析 机器视觉 模式识别

方向比努力更重要

 
 
 

日志

 
 
关于我

河北软件开发项目,电子警察卡口项目,公安天网项目,媒体流处理,数字图像处理。媒体服务器 RTSP、图像处理、车牌识别……DCT变换,H.264压缩

VC与JAVA互通AES加解密  

2016-04-27 09:44:05|  分类: java相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1。JAVA关于AES的代码很多,但是找到能跟OpenSSL配对的很少。

这是加密的程序,解密程序也差不多


SecretKeySpec secretKeySpec = new SecretKeySpec(password, "AES");
IvParameterSpec paramSpec = new IvParameterSpec(ivi);
Cipher ecipher = Cipher.getInstance("AES/CBC/NOPADDING");
ecipher.init(Cipher.ENCRYPT_MODE, secretKeySpec,paramSpec);
 

问题

1.网上很多JAVA AES算法,很多都用SecureRandom,如果你的代码中出现了SecureRandom这个东西,那么恭喜你,

你再也不能用C解出来了。

2.跟C约定相同的AES算法,AES实现有四种,像CBC/ECB/CFB/OFB

3.约定相同的Padding

java支持的Padding方式有三种NoPadding/PKCS5Padding/

每种的补齐方式是不一样的,这跟OpenSSL是有区别的,OpenSSL中补齐的方式是/0,但是JAVA中没有这一种方式。

所以方便起见,就跟C约定好补齐


附其它资料:

http://blog.turbidsoul.me/posts/opensslhe-java-aessuan-fa-de-de-wen-ti.html


——————————————————————————————————————————-

还有一个问题,不通操作系统JAVA生成的密钥不一样。
原因分析
SecureRandom 实现完全随操作系统本身的內部状态,除非调用方在调用 getInstance 方法之后又调用了 setSeed 方法;该实现在 windows 上每次生成的 key 都相同,但是在 solaris 或部分 linux 系统上则不同。

______________________________________________
另外还有人说一个问题:
kgen.init(128, new SecureRandom(password.getBytes()));
这样产生的key不是固定的,解密的时候会有问题的。
————————————————————————————————

楼主,你确定你的AES加密的可以用???
kgen.init(128, new SecureRandom(password.getBytes()));
我可是被你坑惨了 啊!!!!
你用你的加密算法加密一段字符,一周以后,你再用你的解密方法,看看能否解密!!!!!!
等你回答!!!!!
————————————————————————————————————
总之你去用阿帕奇的工具类吧,你也可以用这个例子验证一下,照我评论里说的,加密一段字符串,等一周以后再用楼主的文章里面的方法解密,你看看你能不能解密了。

——————————————————————————————————————
听说还可以用 OpenSSL AES 实现加密解密,供C++使用
  评论这张
 
阅读(239)| 评论(1)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018