问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

哪位大神能讲下OAuth2.0 token生成算法

发布网友 发布时间:2022-04-25 19:27

我来回答

1个回答

热心网友 时间:2022-04-12 01:59

1、HMACSHA1的概念
HMACSHA1 是
从 SHA1 哈希函数构造的一种键控哈希算法,被用作 HMAC(基于哈希的消息验证代码)。此 HMAC
进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希计算,将所得哈希值与该密钥混合,然后再次应用哈希函数。输出的哈希值长度为 160
位,可以转换为指定位数。
上面是微软的标准定义,我看了也没太明白,他的作用一句话来理解:就是确认请求的URL或者参数是否存在被篡改,以QQ
签名为例:发送方(自己)将参数等进行HMAC算法计算,将得到的哈希值(即签名值)与请求的参数一同提交至接收方(QQ端),然后接收方再次将参数等值
进行HMAC算法计算,将得到的哈希值与你传递过来的哈希值进行核对验证,若一样,说明请求正确、验证通过,进行一下步工作,若不一样,将返回错误。
(下面说的够详细了吧,还不理解,留言给我)

2、QQ OAuth 1.0中用到的哈希算法

/// <summary>

/// HMACSHA1算法加密并返回ToBase64String

/// </summary>

/// <param name="strText">签名参数字符串</param>

/// <param name="strKey">密钥参数</param>

/// <returns>返回一个签名值(即哈希值)</returns>

public static string ToBase64hmac(string strText, string strKey)

{

HMACSHA1 myHMACSHA1 = new HMACSHA1(Encoding.UTF8.GetBytes(strKey));

byte[] byteText = myHMACSHA1.ComputeHash(Encoding.UTF8.GetBytes(strText));

return System.Convert.ToBase64String(byteText);

}
或者写成,原理一样:

public static string HMACSHA1Text(string EncryptText, string EncryptKey)
{
//HMACSHA1加密
string message;
string key;
message = EncryptText;
key = EncryptKey;

System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(key);
HMACSHA1 hmacsha1 = new HMACSHA1(keyByte);
byte[] messageBytes = encoding.GetBytes(message);
byte[] hashmessage = hmacsha1.ComputeHash(messageBytes);

return ByteToString(hashmessage);
}

前面都注释了参数含义,就不再说明了。COPY就可使用

注明:页面请引用
using System.Security.Cryptography;

3、介绍另外一种HMACSHA1算法的写法

public static string HMACSHA1Text(string EncryptText, string EncryptKey)

{
//HMACSHA1加密
HMACSHA1 hmacsha1 = new HMACSHA1();
hmacsha1.Key = System.Text.Encoding.UTF8.GetBytes(EncryptKey);

byte[] dataBuffer = System.Text.Encoding.UTF8.GetBytes(EncryptText);
byte[] hashBytes = hmacsha1.ComputeHash(dataBuffer);
return Convert.ToBase64String(hashBytes);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
瑞安市塘下航达汽车电器配件厂怎么样? 意尔康公司总部地址在哪里 I only wish to face the sea, with spring blossoms是什么意思 征信五级分类是什么?被纳入黑名单有什么影响? 你好,如果诈骗分子利用你隐私视频和盗取你的通讯录好友威胁你要钱的话... ...对方有我的私密照片还有通讯录,要求我给他五千,要不然就发我家人,我... ...现在已经一个月没有性生活了。但是她平时对我很好 是怎么了?_百度... 女人半年没有性生活正常吗 谁能用英语给我写一段游戏里面的征婚启事? 征婚启事用英文怎么说? oauth2.0怎么以接口的形式 Oauth2.0 可以替代Session来达到用户一直在线的效果吗 怎么使用获得的OAuth2.0 Access Token调用API oauth2.0 支持哪些账号 oauth2.0,在拥有appkey和appsecret的情况下,经过那些步骤可以获取最终的... 如何使用获得的oauth2.0 access token调用api,获取用户身份,完成用户... 华为ART_ALOOx多少钱? 网站上的文章被删除了一部分,百度抓取频次有异常,这样的情况该怎么处理? 扒网站打不开链接,用的工具是网站抓取精灵。主页可以打开,但是列表页和内容页打不开,求助各位大神,谢 百度快照抓取的信息如何才能删除掉? 怎么防止手机联系人被小程序抓取? fiddler怎么抓取电脑浏览器请求 如何删除已经禁止搜索引擎抓取的页面 手机无法抓取屏幕截图,无法下载软件怎么办 scrapy为什么不能爬取多页 scrapy 爬取失败但不提示出错怎么办 python scrapy 怎么删除一个project python scrapy 怎么删除 spider 网页抓取工具怎么卸载呢? linux 怎么删除scrapy 手机图标删不掉怎么vivo 乌梅是什么?什么样子的?有什么作用?给个图片。 梅子,话梅,青梅,是不是一样的东东? 青梅是水果吗 话梅是什么梅?和青梅一个东西吗? 潮汕人夏天很喜欢喝的酸梅汤,究竟是如何制作的? 青梅和乌梅一样吗?各有什么用处? oppo手机微距功能在哪里 乌梅长什么样有图片吗 oppofindx如何拍微距 酸梅酒要怎么泡? oppor17的相机模式一直是微距,导致拍照一直很模糊,该怎么取消微距? 对经济法的认识是什么? 酸梅汁一般都是由什么来制作的? OPPO Ace2机型超广角/微距模式如何使用? OPPO Reno3如何使用超广/微距模式? OPPO A8手机使用超广/微距模式的方法? 你对经济法这门课程有何看法? 经济法的概念是什么? OPPO A11s的微距镜头好用么?