问题描述:java的MD5加密跟C#的MD5加密结果不一致,FormsAuthentication.HashPasswordForStoringInConfigFile(p, "MD5").ToUpper();这是c#的MD5加密     在网上找了问题 有很多人提出这样的问题   说是与服务器调节保持一种MD5一致,自己写一个MD5加密。小弟不会写MD5加密,求各位大神解救啊..............

解决方案 »

  1.   

    MD5 加密跟数据类型有关系吗? 我这里是String 字符串Md5加密
      

  2.   

    这里给一个JAVA版本MD5加密的实现。如果要验证加密是否正确,可以移步
    http://www.ostools.net/encrypt?type=2
    public final static String MD5(String s) {  
             //16进制下数字到字符的映射数组    
            char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',  
                    'a', 'b', 'c', 'd', 'e', 'f' };  
            try {  
                byte[] strTemp = s.getBytes();  
                MessageDigest mdTemp = MessageDigest.getInstance("MD5");  
                mdTemp.update(strTemp);  
                byte[] md = mdTemp.digest();  
                int j = md.length;  
                char str[] = new char[j * 2];  
                int k = 0;  
                for (int i = 0; i < j; i++) {  
                    byte byte0 = md[i];  
                    str[k++] = hexDigits[byte0 >>> 4 & 0xf];  
                    str[k++] = hexDigits[byte0 & 0xf];  
                }  
                return new String(str);  
            } catch (Exception e) {  
                // TODO: handle exception  
                e.printStackTrace();  
                return null;  
            }  
        }  例如输入字符串是:123456
    MD5加密之后是:e10adc3949ba59abbe56e057f20f883e
      

  3.   

    用你写的MD5工具生成MD5字符串,然后与网上成熟的MD5生成工具生成的结果比较一下就知道哪一个对,哪一个错了
      

  4.   

    谢谢 你的加密算法是正确的 javaMD5 我有   只是我的JavaMD5 加密后结果与服务器C#的MD5加密结果不一致
    服务器的MD5是这样实现的FormsAuthentication.HashPasswordForStoringInConfigFile(p, "MD5").ToUpper();  现在 是什么样的JavaMD5加密结果后与c#的MD5结果一致
      

  5.   

    四楼 MD5加密现在是正确的  只是服务器那端用的是C#  我客户端这边用的是java   所以出现了结果不一致的问题
      

  6.   

    首先得你确认哪一边加密是错的,是C#还是Java?
      

  7.   

    好了 已经解决了谢谢各位java中用urlencoder.encode转码后加密 c#中用System.Web.HttpUtility.UrlEncode转码后加密对比 这样就一样了