java与php中的md5互通

其实md5这个算法和语言没有一分钱关系,为什么很多同学在使用不同语言开发的时候,使用md5算法得出的结果会不一样,比如java与php,其实很多时候是由于收到源码文件的影响,比如你java的字符串编码是unicode,不收源码文件影响,而php的编码是和源文件编码一致的,收源码编码影响。

        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;
                } 
        }

Avatar photo

About Blackford

这是个最好的时代,这是个最坏的时代,这是个充满希望的春天,这是个令人绝望的冬天,我们前面什么都有,我们前面什么都没有。梦想,让我们一次次的走远,又一次次的回头,一个关于人生的梦想还在不断奔跑,带着喜悦和疼痛,不过一切才刚刚开始,并且直到今天也远远没有结束
This entry was posted in Java编程语言. Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用*标注