> 馆藏中心

java用MD5hash加密,能不能用PHP写出来一样的效果?

来源:cnblogs 编辑:张华

PHP不是2113很懂、但是PHP和Java用MD5加密的结果是5261一样的、我记得上次我还用4102Java调用了人家的PHP充值接口、其中有1653参数就是MD5加密的;希望回答能给你带来帮助~如果满意,请采纳,如还有疑问,可继续追问!您也可以向我们团队发出请求,会有更专业的人来为您解答!,如果不是同一套加密标准,结果肯定不一样追答如果不是同一套加密标准,结果肯定不一样如果不是同一套加密标准,结果肯定不一样www.179s.com防采集请勿采集本网。

md5(md5($username.$username.$password, true));收获园豆:50PHP应该是有现成的md5实现的,拿过来用就完了,至不济还能在前台调js的md5加密再往后传

Java的字符串是unicode编码,不受源2113码文件的编码影响;而5261PHP的编码是和源码文件的编码一4102致,受源码编码影1653响。例中java字符数据在散列时的编码和php编码未能保持一致,我认为这是导致输出不同的“病理”由于未知mad.toMd5的具体实现,问题直接成因应该在toMd5的String到byte[]转换时的编码上,或者未设置或者设置了错误的编码但只要java的字符串先getBytes获得字节串,并和php源码编码一致,就能获得一致结果。追问java:mad.toMd5("4451711").toLowerCase() 获得的结果与 php:md5("4451711")的结果一样都是65c8065d688842d1444d2dd42550692b但是为什么加上一个字符串后再加密一次就不一样了呢追答至于为什么不一样?问题出在你的toMad5方法“在实现或调用上一定不正确”。====================import java.security.MessageDigest;public class Test{ public static void main(String[] args) { try{ System.out.println( toMD5(( toMD5( ("4451711").getBytes("GBK") )+"09519f" ).getBytes("GBK")) ); }catch(Exception e){ e.printStackTrace(); } } public static String toMD5(byte[] source) { try{ MessageDigest md = MessageDigest.getInstance("MD5"); md.update( source ); 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; } }}=============输出4c3dac55f41d67aeea814d09d5865aa9和之前php的输出一致4c3dac55f41d67aeea814d09d5865aa9给出toMd5源码,可以找出问题给你内容来自www.179s.com请勿采集。

本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。本文《java用MD5hash加密,能不能用PHP写出来一样的效果?》转载自cnblogs,版权归原作者所有,若侵权请联系:E-MAIL:513175919@qq.com
违法违规信息请立即联系本网可获得现金奖励,TEL:1-8-2-1-0-2-3-3-3-8-1(电话仅供违法违规信息举报,侵权类信息请EMAIL。)

www.179s.com false 互联网 http://www.179s.com/jsblogcnk/po/poaovd.html report 1704 md5(md5($username.$username.$password, true));收获园豆:50PHP应该是有现成的md5实现的,拿过来用就完了,至不济还能在前台调js的md5加密再往后传

热门图片

经济金融企业管理法律法规社会民生科学教育降生活体育运动文化艺术电子数码电脑网络娱乐休闲行政地区心理分析医疗卫生