分享

在java中实现php的md5加密

 quasiceo 2015-06-25

      哥需要趁热打铁,被一个md5加密的问题弄得几天没休息好,现在说下事情来由,如果不愿意看我这些问题发生的经过,可以直接跳到最后面的解决方法阅读:

 

项目内容分析:我们公司网站和KU6网合作,使用ku6网的一个上传视频的OPEN API接口。这个URL接口链接有授权用户名、密码、版本号、视频标题、视频描述、视频标签等参数,还有最重要的一个参数,是通过这些链接参数进行MD5加密而得到的。

 

项目语言:我们公司基于JAVA,KU6的接口基于PHP

     

实现上传的原理:上传成功的原理比较简单,我们网站生成的MD5,和KU6网接口生成的MD5进行匹配就行了。也就是说,除了&md5=这个参数以外,其它的参数必须是一致,因为是通过form的post提交,所以中文字符可以不用进行编码,直接进入程序进行加密提交并返回上传成功的结果。

 

出现问题了:但是不管如何都是返回了一个md5编码的错误信息(这个那个API接口的一个错误提示),这个问题一直和KU6方提出求援,但是还是没得到很好的帮助,因项目很紧急,而且这个问题浪费了我两三天的时间,最后和老大们讨论了一下,会不会是java和php的MD5加密方式不一样导致的?最后经过了测试,对于英文和数字的参数,java和php的MD5加密返回结果是一样的,但是中文加密后就不一样了。

 

解决思路:

1、重写一个java版的php MD5加密方法,这个是不太可能的,因为要耗费太多时间。(失败告终)

2、上网找解决方案,很难找,找了很多java的md5中文加密都不能够返回一个和php的md5中文加密相同的示例。(失败告终)

 

解决方式:

      很懊恼中,突然灵光一闪,我能否直接用php的md5方法加密后,把返回的结果传到JAVA代码里面去呢??我立即按照这个思路去做:

      1、搭建好php的环境(不作介绍),写一个通过提取get参数,并对值进行md5加密的页面,如下

   <?php echo strtoupper(md5($_GET["md5str"])); ?>

   strtoupper是字母大写转换的函数

   md5是MD5加密的函数

   $_GET["md5str"]就是通过url带一个md5str的参数,把值获取并打印出来

 

      2、JAVA页面的提交方法

 

Java代码  收藏代码
  1.               /** 
  2.  * 用于做PHP的提交处理 
  3.  * @param url 
  4.  */  
  5. public static String phpRequest(String url){  
  6.     try{  
  7.         HttpClient client = new HttpClient();  
  8.         PostMethod post = new PostMethod(url);//使用POST方式提交数据  
  9.         post.setRequestHeader("Content-Type","text/html; charset=UTF-8");  
  10.         client.executeMethod(post);  
  11.         String response = new String(post.getResponseBodyAsString().getBytes("8859_1"), "UTF-8");//打印结果页面  
  12.         post.releaseConnection();  
  13.         return response;  
  14.     } catch(IOException e){  
  15.         e.printStackTrace();  
  16.         return null;  
  17.     }  
  18. }  

     需要提示的是,url记得先对中文参数进行一次UTF-8的编码再传到这个方法里面,这个方法对响应的结果做了反编码的处理,最后就能正确的返回php MD5加密后的值了!

 

总结:最终问题是以这种投机取巧的方式解决的。这要根据实际情况去使用,有些网站项目不一定php和jsp的环境都会共存,还要考虑到一个维护性的问题,最好在java处理这部分功能的代码上加上注释和文档,以便日后维护!完了,晚安!!


Java的MD5本来加密出来的就是字节流,只不过是为了阅读方便又包装了一层转为字符串。。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多