设为首页 收藏本站
查看: 566|回复: 0

[经验分享] 在java中实现php的md5加密

[复制链接]

尚未签到

发表于 2017-4-6 08:45:17 | 显示全部楼层 |阅读模式
        哥需要趁热打铁,被一个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页面的提交方法

               /**
* 用于做PHP的提交处理
* @param url
*/
public static String phpRequest(String url){
try{
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(url);//使用POST方式提交数据
post.setRequestHeader("Content-Type","text/html; charset=UTF-8");
client.executeMethod(post);
String response = new String(post.getResponseBodyAsString().getBytes("8859_1"), "UTF-8");//打印结果页面
post.releaseConnection();
return response;
} catch(IOException e){
e.printStackTrace();
return null;
}
}
  需要提示的是,url记得先对中文参数进行一次UTF-8的编码再传到这个方法里面,这个方法对响应的结果做了反编码的处理,最后就能正确的返回php MD5加密后的值了!
    总结:最终问题是以这种投机取巧的方式解决的。这要根据实际情况去使用,有些网站项目不一定php和jsp的环境都会共存,还要考虑到一个维护性的问题,最好在java处理这部分功能的代码上加上注释和文档,以便日后维护!完了,晚安!!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-360801-1-1.html 上篇帖子: PHP+MYSQL网站设计入门实践[2.49G]下载地址 下篇帖子: PHP遍历文件目录与清除目录中的文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表