php hmacsha1 base64,Base64Encode(HmacSha1(签名原文,SecretKey))//的相关问题

= 位异或 (bkey , 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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值