• C# MD5加密 2位宽度导致少了个0/多了个0 Base64加密


    MD5加密方法:

    public static string calculateDigest(string content, string secretkey)
    {
      string toSignContent = content + secretkey;
      MD5 md5 = MD5.Create();
      string md5Str = "";
      byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(toSignContent));
      // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
      for (int i = 0; i < s.Length; i++)
      {
        // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
        // 写X2,结果是35beb18e154178d35f40ecc3c204e370
        // 写X,结果是35beb18e154178d35f40ecc3c24e370,少了个0
        // 原因:这个是很常见的错误,你字节转换成字符串的时候要保证是2位宽度啊,某个字节为0转换成字符串的时候必须是00的,否则就会丢失位数啊。不仅是0,1~9也一样。

        // 参考:https://www.cnblogs.com/zuochanzi/p/7206083.html

        md5Str = md5Str + s[i].ToString("X2");
      }

      return Convert.ToBase64String(Encoding.GetEncoding("utf-8").GetBytes(md5Str.ToLower()));
    }

    Base64加密方法:
    //此处注意:md5Str大写和小写,经过Base64加密出的结果是不一样的

    Convert.ToBase64String(Encoding.GetEncoding("utf-8").GetBytes(md5Str))

  • 相关阅读:
    NOIP2016 蚯蚓 题解
    BZOJ 1294 围豆豆 题解
    POJ1852 Ants 题解
    BZOJ 1131 [POI2008] STA-Station 题解
    HDU 5963 朋友 题解
    Codeforces 1292C Xenon's Attack on the Gangs 题解
    Emergency Evacuation 题解
    P4408 逃学的小孩 题解
    UVA11300 Spreading the Wealth 题解
    P2882 Face The Right Way G 题解
  • 原文地址:https://www.cnblogs.com/wa502/p/14908282.html
Copyright © 2020-2023  润新知