开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2869|回复: 1
收起左侧

[已解决] Base64Encode(HmacSha1(签名原文,SecretKey))//的相关问题

 关闭 [复制链接]
结帖率:90% (27/30)
发表于 2018-11-16 20:18:27 | 显示全部楼层 |阅读模式   四川省成都市
5精币
TX云的对接需要计算这个,https://cloud.tencent.com/document/product/441/18853
就用案例提供的原文和案例提供的密匙,都算不正确,还望大佬指点一二。






【源码见下】




  
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
SecretKey文本型 
SecretKey = “oaYWFO70LGDmcpfwo8uF1IInayysGtgZ”
调试输出 (b64_hmac_sha1 ( #常量1, SecretKey))
返回 (0)
子程序名返回值类型公开备 注
rstr_hmac_sha1字节集 
参数名类 型参考可空数组备 注
key字节集
data字节集
变量名类 型静态数组备 注
bkey整数型0
length整数型 
ipad整数型16
opad整数型16
i整数型 
数组容器整数型0
hash整数型0
rstr2binb (key, bkey)
length = 取数组成员数 (bkey)
如果真 (length > 16)
binb_sha1 (bkey, 取字节集长度 (key) × 8, bkey)

如果真 (取数组成员数 (bkey) < 16)
重定义数组 (bkey, 真, 16)

变量循环首 (1, 16, 1, i)
ipad [i]位异或 (bkey [i], 909522486)
opad [i]位异或 (bkey [i], 1549556828)
变量循环尾 ()
rstr2binb (data, 数组容器)
加入成员 (ipad, 数组容器)
binb_sha1 (ipad, 512 + 取字节集长度 (data) × 8, hash)
清除数组 (数组容器)
加入成员 (opad, hash)
binb_sha1 (opad, 512 + 160, 数组容器)
返回 (binb2rstr (数组容器))
子程序名返回值类型公开备 注
hex_hmac_sha1文本型 如果参数有汉字,请注意编码
参数名类 型参考可空数组备 注
k文本型
d文本型
返回 (rstr2hex (rstr_hmac_sha1 (到字节集 (k), 到字节集 (d))))
子程序名返回值类型公开备 注
b64_hmac_sha1文本型 如果参数有汉字,请注意编码
参数名类 型参考可空数组备 注
k文本型
d文本型
返回 (rstr2b64 (rstr_hmac_sha1 (到字节集 (k), 到字节集 (d))))
子程序名返回值类型公开备 注
rstr2binb  
参数名类 型参考可空数组备 注
input字节集
output整数型
变量名类 型静态数组备 注
inputlength整数型 
outputlength整数型 
i整数型 
jp整数型 
inputlength = 取字节集长度 (input)
重定义数组 (output, 假, 右移 (inputlength, 2))
outputlength = 取数组成员数 (output)
如果真 (outputlength < 右移 (inputlength × 8, 5) + 1)
重定义数组 (output, 真, 右移 (inputlength × 8, 5) + 1)

变量循环首 (0, outputlength, 1, i)
如果真 (i ≥ outputlength)
跳出循环 ()
output [i + 1] = 0
变量循环尾 ()
i = 0
变量循环首 (0, inputlength × 8, 8, i)
如果真 (i ≥ inputlength × 8)
跳出循环 ()

output [右移 (i, 5) + 1]位或 (output [右移 (i, 5) + 1], 左移 (位与 (input [i ÷ 8 + 1], 255), 24 - i % 32))
变量循环尾 ()
子程序名返回值类型公开备 注
binb_sha1  
参数名类 型参考可空数组备 注
x整数型
len整数型
return整数型
变量名类 型静态数组备 注
w整数型80
a整数型 
b整数型 
c整数型 
d整数型 
e整数型 
i整数型 
xlength整数型 
olda整数型 
oldb整数型 
oldc整数型 
oldd整数型 
olde整数型 
j整数型 
t整数型 
ret文本型 
tmp整数型 
xlength = 取数组成员数 (x)
tmp = 左移 (右移 (len + 64, 9), 4) + 16
如果真 (xlength < tmp)
重定义数组 (x, 真, tmp)

x [右移 (len, 5) + 1]位或 (x [右移 (len, 5) + 1], 左移 (128, 24 - len % 32))
x [左移 (右移 (len + 64, 9), 4) + 16] = len
xlength = 取数组成员数 (x)
a = 1732584193
b = -271733879
c = -1732584194
d = 271733878
e = -1009589776
变量循环首 (0, xlength, 16, i)
如果真 (i ≥ xlength)
跳出循环 ()
olda = a
oldb = b
oldc = c
oldd = d
olde = e
变量循环首 (0, 80, 1, j)
如果真 (j ≥ 80)
跳出循环 ()
如果 (j < 16)
w [j + 1] = x [i + j + 1]
' 调试输出 (w [j + 1], j + 1)
w [j + 1]bit_rol (位异或 (w [j - 3 + 1], w [j - 8 + 1], w [j - 14 + 1], w [j - 16 + 1]), 1)
' 调试输出 (w [j + 1], j + 1)
' w [j + 1] = 0
t = safe_add (safe_add (bit_rol (a, 5), sha1_ft (j, b, c, d)), safe_add (safe_add (e, w [j + 1]), sha1_kt (j)))
e = d
d = c
c = bit_rol (b, 30)
b = a
a = t
变量循环尾 ()
a = safe_add (a, olda)
b = safe_add (b, oldb)
c = safe_add (c, oldc)
d = safe_add (d, oldd)
e = safe_add (e, olde)
变量循环尾 ()
重定义数组 (return, 假, 5)
return [1] = a
return [2] = b
return [3] = c
return [4] = d
return [5] = e
子程序名返回值类型公开备 注
binb2rstr字节集 
参数名类 型参考可空数组备 注
input整数型
变量名类 型静态数组备 注
output字节集 
length整数型 
i整数型 
length = 取数组成员数 (input) × 32
变量循环首 (0, length, 8, i)
如果真 (i ≥ length)
跳出循环 ()

output = output + 到字节集 (到字节 (位与 (逻辑右移 (input [右移 (i, 5) + 1], 24 - i % 32), 255)))
变量循环尾 ()
返回 (output)
子程序名返回值类型公开备 注
rstr2hex文本型 
参数名类 型参考可空数组备 注
input字节集
变量名类 型静态数组备 注
hex_tab字节集 
output字节集 
length整数型 
i整数型 
x整数型 
hex_tab = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102 }
length = 取字节集长度 (input)
变量循环首 (0, length, 1, i)
如果真 (i ≥ length)
跳出循环 ()
' x = input.charCodeAt(i);
' output += hex_tab.charAt((x >>> 4) & 0x0F) +  hex_tab.charAt( x        & 0x0F);
x = input [i + 1]
output = output + 到字节集 (hex_tab [位与 (逻辑右移 (x, 4), 15) + 1])到字节集 (hex_tab [位与 (x, 15) + 1])
变量循环尾 ()
返回 (到文本 (output))
子程序名返回值类型公开备 注
rstr2b64文本型 
参数名类 型参考可空数组备 注
input字节集
变量名类 型静态数组备 注
tab文本型0
output文本型 
len整数型 
i整数型 
j整数型 
triplet整数型 
input2字节集 
tab = { “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “J”, “K”, “L”, “M”, “N”, “O”, “P”, “Q”, “R”, “S”, “T”, “U”, “V”, “W”, “X”, “Y”, “Z”, “a”, “b”, “c”, “d”, “e”, “f”, “g”, “h”, “i”, “j”, “k”, “l”, “m”, “n”, “o”, “p”, “q”, “r”, “s”, “t”, “u”, “v”, “w”, “x”, “y”, “z”, “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “+”, “/” }
len = 取字节集长度 (input)
input2 = input + { 0, 0 }
变量循环首 (0, len, 3, i)
如果真 (i ≥ len)
跳出循环 ()

triplet = 位或 (左移 (input2 [i + 1], 16), 选择 (i + 1 < len, 左移 (input2 [i + 2], 8), 0), 选择 (i + 2 < len, input2 [i + 3], 0))
变量循环首 (0, 4, 1, j)
如果真 (j ≥ 4)
跳出循环 ()

如果 (i × 8 + j × 6 > len × 8)
output = output + “=”
output = output + tab [位与 (逻辑右移 (triplet, 6 (3 - j)), 63) + 1]

变量循环尾 ()
变量循环尾 ()
返回 (output)
子程序名返回值类型公开备 注
bit_rol整数型 
参数名类 型参考可空数组备 注
num整数型
cnt整数型
变量名类 型静态数组备 注
return整数型 
return = 位或 (左移 (num, cnt), 逻辑右移 (num, 32 - cnt))
返回 (return)
子程序名返回值类型公开备 注
safe_add整数型 
参数名类 型参考可空数组备 注
x整数型
y整数型
变量名类 型静态数组备 注
lsw整数型 
msw整数型 
return整数型 
lsw = 位与 (x, 65535)位与 (y, 65535)
msw = 右移 (x, 16)右移 (y, 16)右移 (lsw, 16)
return = 位或 (左移 (msw, 16), 位与 (lsw, 65535))
返回 (return)
子程序名返回值类型公开备 注
sha1_ft整数型 
参数名类 型参考可空数组备 注
t整数型
b整数型
c整数型
d整数型
如果真 (t < 20)
返回 (位或 (位与 (b, c), 位与 (位取反 (b), d)))

如果真 (t < 40)
返回 (位异或 (b, c, d))

如果真 (t < 60)
返回 (位或 (位与 (b, c), 位与 (b, d), 位与 (c, d)))

返回 (位异或 (b, c, d))
子程序名返回值类型公开备 注
sha1_kt整数型 
参数名类 型参考可空数组备 注
t整数型
判断 (t < 20)
返回 (1518500249)
判断 (t < 40)
返回 (1859775393)
判断 (t < 60)
返回 (-1894007588)
返回 (-899497514)

子程序名返回值类型公开备 注
逻辑左移整数型 (逻辑左移) (算术左移)
参数名类 型参考可空数组备 注
欲移动的整数整数型
欲被移动的位数字节型
置入代码 ({ 81, 139, 69, 8, 138, 77, 12, 211, 224, 89, 139, 229, 93, 194, 8, 0 })
返回 (-1)
子程序名返回值类型公开备 注
逻辑右移整数型 (逻辑右移) (算术右移) 寄存器,1
参数名类 型参考可空数组备 注
欲移动的整数整数型
欲被移动的位数字节型
置入代码 ({ 81, 139, 69, 8, 138, 77, 12, 211, 232, 89, 139, 229, 93, 194, 8, 0 })
返回 (-1)


i支持库列表   支持库注释   
spec特殊功能支持库



最佳答案

查看完整内容

用 js 的吧。

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

结帖率:100% (2/2)

签到天数: 21 天

发表于 2018-11-16 20:18:28 | 显示全部楼层   浙江省杭州市
eeafa2b16009ca822b3b7aef6fff9532.GIF

用 js 的吧。

js.txt (15.82 KB, 下载次数: 85)

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表