zoukankan      html  css  js  c++  java
  • c# 与 PHP中 SHA1加密结果不同解决方法

    那天在调试API的时候,发现用c#写的SHA1加密出来的结果和PHP中sha1()出来的不一样,找了半天的原因后来才弄出来

    在调试微信接口的时候大多的帮助文档都是提供的是PHP的方法,所以在.net中实现的时候会出现很多的问题,最典型的就是token通不过验证

    现在提供一个结果与Php一样 的SHA1方法

            public static string Sha1Sign(string data)
            {
                byte[] temp1 = Encoding.UTF8.GetBytes(data);
                SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
                byte[] temp2 = sha.ComputeHash(temp1);
                sha.Clear();
                // 注意, 不能用这个
                // string output = Convert.ToBase64String(temp2);// 不能直接转换成base64string
                var output = BitConverter.ToString(temp2);
                output = output.Replace("-", "");
                output = output.ToLower();
                return output;
            }
    

    解决方式:在php中sha1出来的是小写字母,可是在c#中默认出来的是大写,在token验证的时候也是区分大小写的,另外很多人在

                // string output = Convert.ToBase64String(temp2);// 不能直接转换成base64string
                var output = BitConverter.ToString(temp2);
    

      这里犯了错误却一直没有发现,所以找了很久的原因 

    PS:

    在送上一个Php的

    base64_encode的c#实现

            public static string Base64_encode(string data)
            {
                return Convert.ToBase64String(Encoding.UTF8.GetBytes(data));
            }
    

      

  • 相关阅读:
    dir for RequestHandler and request
    python globals和locals
    Spring AOP(通知、连接点、切点、切面)
    Elasticsearch和Head插件安装(转)
    服务发现
    全面的软件测试( 转)
    软件开发项目人员配置
    阿里云oss缩略图如何产生读取 超简单 不看后悔(转)
    Elasticsearch模糊查询
    小米Pro 安装苹果系统
  • 原文地址:https://www.cnblogs.com/Bobdong/p/5254147.html
Copyright © 2011-2022 走看看