以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 签名算法 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=164309) |
-- 作者:lshshlxsh -- 发布时间:2021/5/5 20:49:00 -- 签名算法 POSTsms.tencentcloudapi.com/?Action=SendSms&Language=zh-CN&Nonce=4306&PhoneNumberSet.0= 8615968015166&Region=&SecretId=&Sign=基伟休闲&SmsSdkAppid=1400517359&TemplateID=947545&TemplateParamSet.0=123321&Timestamp=1620261056&Version=2019-07-11 请问老师 以上内容 使用HMAC-SHA1算法,将上一步中获得的签名原文字符串进行加密,并对加密后的签名串使用Base64编码,得到最终的签名串(下面红色部分) ,用foxtable 该怎么写? UxiWCuK5ydqpsLoymyrpiYVEEU4= [此贴子已经被作者于2021/5/6 8:57:43编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/5/6 8:43:00 -- 参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=157480 |
-- 作者:lshshlxsh -- 发布时间:2021/5/6 9:01:00 -- 谢谢老师,根据连接算出啦的 是 图1 我要的是图2 的结果 [此贴子已经被作者于2021/5/6 9:02:20编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/5/6 9:15:00 -- key的值不对吧,这种加密必须要有一个key,不能是空值 |
-- 作者:有点蓝 -- 发布时间:2021/5/6 9:22:00 -- 网站使用的是utf8编码:Encoding.utf8.GetBytes,不是Encoding.ASCII.GetBytes,改改即可 |
-- 作者:lshshlxsh -- 发布时间:2021/5/6 9:22:00 -- 我在 https://1024tools.com/hmac 网页上没填写秘钥 算出来的就是我要的结果 |
-- 作者:bobolan521 -- 发布时间:2021/5/6 9:27:00 -- Dim text1 As String = "POSTsms.tencentcloudapi.com/?Action=SendSms&Language=zh-CN&Nonce=4306&PhoneNumberSet.0= 8615968015166&Region=&SecretId=&Sign=基伟休闲&SmsSdkAppid=1400517359&TemplateID=947545&TemplateParamSet.0=123321&Timestamp=1620261056&Version=2019-07-11" Dim key1 = "" Dim byteData = Encoding.utf8.GetBytes(text1) Dim byteKey = Encoding.utf8.GetBytes(key1) Dim hmac = new System.Security.Cryptography.HMACSHA1(byteKey) Dim result = hmac.ComputeHash(byteData) Dim s = Convert.ToBase64String(result ) output.show(s) |
-- 作者:lshshlxsh -- 发布时间:2021/5/6 11:18:00 -- 谢谢老师 下面代码执行后一直报错 麻烦老师帮忙看一下 Dim st As New Date(1970,1,1,8,0,0) Dim Timestamp As Integer = CInt((Date.Now - st).TotalSeconds()) \'时间戳 Dim Nonce As Integer = Rand.Next(2000,3000) \'生成200到300之间的随机整数 Dim Signature As String Dim haoma As String ="PhoneNumberSet.0= 8615869553734" Dim neirong As String ="TemplateParamSet.0=987654" Dim SecretId="AKIDOYdR4SUtON8qV69cZQ2PO8l9UfsrcyKI" Dim text1 As String = "POSTsms.tencentcloudapi.com/?Action=SendSms&Language=zh-CN&N&" & haoma & "&Region=&SecretId=&Sign=基伟休闲&SmsSdkAppid=1400517359&TemplateID=947545&" & neirong & "&Timestamp=" & Timestamp & "&Version=2019-07-11" Dim key1 = "" Dim byteData = Encoding.utf8.GetBytes(text1) Dim byteKey = Encoding.utf8.GetBytes(key1) Dim hmac = new System.Security.Cryptography.HMACSHA1(byteKey) Dim result = hmac.ComputeHash(byteData) Dim s = Convert.ToBase64String(result ) Dim ul As String = s Output.Show(UrlEncode(ul)) Signature = UrlEncode(ul) Dim hc As New HttpClient("https://sms.tencentcloudapi.com") hc.C hc.FormData.Add("Action","SendSms") hc.FormData.Add("Language","zh-CN") hc.FormData.Add("Nonce",Nonce) hc.FormData.Add("SecretId","") hc.FormData.Add("Region","") hc.FormData.Add("Sign","基伟休闲") hc.FormData.Add("PhoneNumberSet.0","+8615869553734") hc.FormData.Add("SmsSdkAppid","1400517359") hc.FormData.Add("TemplateID","947545") hc.FormData.Add("TemplateParamSet.0","987654") hc.FormData.Add("Timestamp",Timestamp) hc.FormData.Add("Version","2019-07-11") hc.FormData.Add("Signature",Signature) Dim ret As String = hc.getData() \' Output.Show(ret) 以下为接口文档 https://cloud.tencent.com/document/api/382/38778 [此贴子已经被作者于2021/5/6 11:38:36编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/5/6 14:27:00 -- 要使用SecretKey加密 Dim key1 = "Gu5t9xGARNpq86cd98joQYCN3*******" 有了安全凭证SecretId 和 SecretKey后,就可以生成签名串了。以下是生成签名串的详细过程: 假设用户的 SecretId 和 SecretKey 分别是:
另外注意参数是否完整,加密的时候拼接的字符串各个参数是有顺序的: 2.1. 对参数排序首先对所有请求参数按参数名的字典序( ASCII 码)升序排序。注意:1)只按参数名进行排序,参数值保持对应即可,不参与比大小;2)按 ASCII 码比大小,如 InstanceIds.2 要排在 InstanceIds.12 后面,不是按字母表,也不是按数值。 |