zoukankan      html  css  js  c++  java
  • java和c#md5加密不同

    java的mad5加密后为32位字符串,c#直接加密后可能不是32位,位数也不确定。

    普通的写法

    public static string Md5(string sourcein)
    {
    var md5Csp = new MD5CryptoServiceProvider();
    byte[] md5Source = Encoding.UTF8.GetBytes(sourcein);
    byte[] md5Out = md5Csp.ComputeHash(md5Source);

    return Convert.ToBase64String(md5Out);
    }

    这样出来的结果肯定和java的不一样

    如果要实现兼容:c#的写法就要改变:

    /// <summary>
            /// 32位MD5加密
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            public static string Md532(string str)
            {
                var md5Csp = new MD5CryptoServiceProvider();
                byte[] md5Source = Encoding.UTF8.GetBytes(str);
                byte[] md5Out = md5Csp.ComputeHash(md5Source);
                string pwd = "";
                for (int i = 0; i < md5Out.Length; i++)
                {
                    pwd  += md5Out[i].ToString("x2");
                }
                return pwd;
            }

    注意

    md5Out[i].ToString("x2"),如果直接用md5Out[i].ToString("x")会丢位,就是0位的字节会丢掉

    ToString("X2") 为C#中的字符串格式控制符

    X为     十六进制 
    2为     每次都是两位数

    比如   0x0A ,若没有2,就只会输出0xA 
    假设有两个数10和26,正常情况十六进制显示0xA、0x1A,这样看起来不整齐,为了好看,可以指定"X2",这样显示出来就是:0x0A、0x1A。 

  • 相关阅读:
    问题账户需求分析
    2017年秋季个人阅读计划
    读“我们应当怎样做需求分析”有感
    开发体会
    第二阶段个人总结10
    第二阶段个人总结09
    第二阶段个人总结08
    个人进度(13)
    个人进度(12)
    个人进度(11)
  • 原文地址:https://www.cnblogs.com/sheseido/p/4110202.html
Copyright © 2011-2022 走看看