文档章节

关于php MD5加密 与java MD5 加密结果不一致的问题

java_T
 java_T
发布于 2012/12/18 18:27
字数 213
阅读 9063
收藏 6

       问题说明:今天在做java接口的时候,遇到一个麻烦问题,浪费我半个下午,也就是MD5加密问题,用户信息是由一个微博系统拿到的,这个微博系统是php开发的,密码使用的是php的MD5 加密方式。与java的MD5是有点不同的,所以就出现加密结果不一样的情况。

        问题解决代码如下:

        public String md5(String txt) {
             try{
                  MessageDigest md = MessageDigest.getInstance("MD5");
                  md.update(txt.getBytes("GBK"));    //问题主要出在这里,Java的字符串是unicode编码,不受源码文件的编码影响;而PHP的编码是和源码文件的编码一致,受源码编码影响。
                  StringBuffer buf=new StringBuffer();            
                  for(byte b:md.digest()){
                       buf.append(String.format("%02x", b&0xff));        
                  }
                 return  buf.toString();
               }catch( Exception e ){
                   e.printStackTrace(); 

                   return null;
                }
        }



© 著作权归作者所有

java_T

java_T

粉丝 34
博文 73
码字总数 13320
作品 0
深圳
高级程序员
私信 提问
加载中

评论(7)

java_T
java_T 博主

引用来自“蓝浩”的评论

胡说,GBK完全是开发者自己的陋习,我写php就一直utf8,GBK简直恶心。

哦,我一个同事就喜欢用GBK,难怪加密出来的结果和我utf8的不一样...
蓝浩
蓝浩
胡说,GBK完全是开发者自己的陋习,我写php就一直utf8,GBK简直恶心。
java_T
java_T 博主

引用来自“maxue”的评论

不懂,md5应该是唯一的

加密时如果字符集编码不一样的话,就会不一样
方舟编译器
方舟编译器
不懂,md5应该是唯一的
Jerry-hu
Jerry-hu

引用来自“肖文锋”的评论

引用来自“傲雪こい”的评论

俺想知道这个问题你是怎么解决的

php一般用GBK编码格式加密,所以,把java这边的编码格式转成GBK格式的字节数组就行了,如:plainText.getBytes("GBK");

ths
java_T
java_T 博主

引用来自“傲雪こい”的评论

俺想知道这个问题你是怎么解决的

php一般用GBK编码格式加密,所以,把java这边的编码格式转成GBK格式的字节数组就行了,如:plainText.getBytes("GBK");
Jerry-hu
Jerry-hu
俺想知道这个问题你是怎么解决的
java的md5代码转php 代码,求大神帮忙?

一段java加密算法,求大神转成php的md5 ,弄了好久,php的结果总是和java的不一致 public class MD5Utils { public static String encrypt(String msg,String key){ return md5(md5(msg)+key......

飞扬网络
03/07
214
2
php的MD5加密和java的Md5加密

最近跟其他公司对接,对方是用的php语言。对方的加密方式是php的MD5函数, 加密方式如下 Md5("123456",true) 加密结果:md5(123456)的结果是:� �9I�Y��V�W��> 然后 base64_encod...

摩羯座的黄小姐
2015/01/20
5.3K
3
java MD5中文加密的问题

java MD5中文加密的问题:java 测试类上加密的结果和tomcat加密的结果不一样

lijegd
2015/07/23
522
2
java中MessageDigest里的update()和digest()方法用php如何现实

下面的java加密代码如何通过PHP实现,例如,php如何将orderNo=1808036013541518128&partnerCode=C000028&type=0&version=V1.0&key=MWFVZO6MJ9OSW61Y9PSKQR9HNPIRT这字符串通过加密变成1AB97...

jsondemo
2018/08/04
2.2K
1
Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC

加密解密,曾经是我一个毕业设计的重要组件。在工作了多年以后回想当时那个加密、解密算法,实在是太单纯了。 言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书...

mrliuze
2015/05/27
166
0

没有更多内容

加载失败,请刷新页面

加载更多

【0911】linux软件包安装和卸载

【0911】linux软件包安装和卸载 一、安装软件包的三种方法 1、rpm工具:与win中的exe安装包类似,红帽子公司包管理系统 2、yum工具:属于一种用python开发的工具,支持自动的安装依赖的包 3、...

飞翔的竹蜻蜓
29分钟前
3
0
【外行学IT】手机网页自适应之rem和viewport

在写手机网页时,对于像素的问题会非常困惑,初学者很多时候会因为那么一个小点的问题解决不了,或者无法理解透彻就放弃了学习。 我在学习写手机网页时也困惑了许久,出现过下面的问题: 图片...

前端老手
40分钟前
5
0
三、Java设计模式之单一职责原则

定义:不要存在多于一个导致类变更的原因。 一个类、接口、方法只负责一项职责 优点:降低类的复杂度、提高类的可读性,提高系统的可维护性、降低变更引起的风险

东风破2019
47分钟前
4
0
搭建高可用MongoDB集群(分片)

搭建高可用MongoDB集群(分片) KaliArch关注1人评论28269人阅读2017-12-04 21:57:41 MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423 MongoDB(replica set)请参考:https:/...

linjin200
今天
6
0
Pandas DataFrame创建方法大全

Pandas是Python的数据分析利器,DataFrame是Pandas进行数据分析的基本结构,可以把DataFrame视为一个二维数据表,每一行都表示一个数据记录。本文将介绍创建Pandas DataFrame的6种方法。 创建...

汇智网教程
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部