• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-24) 56次浏览 已收录 0个评论

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);// 不能直接转换成base64s<a style="color:transparent">来@源gao*daima.com搞@代#码网</a><strong>搞gaodaima代码</strong>tring            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));        }

  


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:c# 与 PHP中 SHA1加密结果不同解决办法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址