c# 与 PHP中 SHA1加密结果不同解决方法
2016-03-08 15:11
435 查看
那天在调试API的时候,发现用c#写的SHA1加密出来的结果和PHP中sha1()出来的不一样,找了半天的原因后来才弄出来
在调试微信接口的时候大多的帮助文档都是提供的是PHP的方法,所以在.net中实现的时候会出现很多的问题,最典型的就是token通不过验证
现在提供一个结果与Php一样 的SHA1方法
解决方式:在php中sha1出来的是小写字母,可是在c#中默认出来的是大写,在token验证的时候也是区分大小写的,另外很多人在
这里犯了错误却一直没有发现,所以找了很久的原因
PS:
在送上一个Php的
base64_encode的c#实现
在调试微信接口的时候大多的帮助文档都是提供的是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)); }
相关文章推荐
- 什么是web服务器,ftp服务器,和流媒体服务器
- QPS/TPS等系统指标
- phpmyadmin表加载卡顿,打不开的处理方法
- PHP 根据IP地址获取所在城市
- php在数组中判断某个值是否存在
- Yii createCommand CURD操作
- php处理字符串
- 详解WordPress中用于更新和获取用户选项数据的PHP函数
- 视音频数据处理入门:UDP-RTP协议解析
- 【慕课笔记】4-3 字节流之文件输出流FileOutputStream
- 怎么用php写一个日志功能的函数
- 深入理解PHP原理之变量作用域
- 深入理解PHP原理之变量分离/引用
- PHP 运行方式(PHP SAPI介绍)
- php分享三十一:编程中的一些特殊写法
- 使用 php 内部web服务器
- php 教程列表
- Thinkphp项目结构
- PHP 单引号双引号的区别
- php 小积累