c# 与 PHP中 SHA1加密结果不同解决方法

2018-06-23 23:17:49来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

那天在调试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));
        }

  

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:.NET中的流

下一篇:c# 委托与异步调用