zoukankan      html  css  js  c++  java
  • 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))

  • 相关阅读:
    10、代码块、构造代码块、静态代码块及main方法之间的关系
    2.0、Hibernate框架的简单搭建
    1.0、Struts2的简单搭建方法
    5、Servlet的使用
    angular组件之间的通信
    angular项目中遇到的问题
    ng-zorro-mobile中遇到的问题
    angular管道操作符的使用
    angular路由配置以及使用
    搭建Angular环境
  • 原文地址:https://www.cnblogs.com/wa502/p/14908282.html
Copyright © 2011-2022 走看看