网站首页 > 易语言相关 > 易语言例程 正文
易语言Base64_hmac_sha1加密算法源码
.版本 2
.程序集 程序集1
.子程序 _启动子程序, 整数型
.局部变量 str, 文本型
.局部变量 key, 文本型
str = “ddddfw456gfh32fg32 fg3df32gd fd”
key = “73wW2Dc6ffr0.fdgd32gdf4gs/”
输出调试文本 (Base64_hmac_sha1 (str, key))
返回 (0)
.子程序 Base64_hmac_sha1, 文本型, , 如果参数有汉字,请注意编码
.参数 data, 文本型
.参数 key, 文本型
返回 (rstr2b64 (rstr_hmac_sha1 (到字节集 (data), 到字节集 (key))))
.子程序 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)
.子程序 bit_rol, 整数型
.参数 num, 整数型
.参数 cnt, 整数型
.局部变量 return, 整数型
return = 位或 (左移 (num, cnt), 逻辑右移 (num, 32 - cnt))
返回 (return)
.子程序 sha1_kt, 整数型
.参数 t, 整数型
.判断开始 (t < 20)
返回 (1518500249)
.判断 (t < 40)
返回 (1859775393)
.判断 (t < 60)
返回 (-1894007588)
.默认
返回 (-899497514)
.判断结束
.子程序 sha1_ft, 整数型
.参数 t, 整数型
.参数 b, 整数型
.参数 c, 整数型
.参数 d, 整数型
.如果真 (t < 20)
返回 (位或 (位与 (b, c), 位与 (位取反 (b), d)))
.如果真结束
' 本源码来自三叶资源网(www.sanye.cx)
.如果真 (t < 40)
返回 (位异或 (b, c, d))
.如果真结束
.如果真 (t < 60)
返回 (位或 (位与 (b, c), 位与 (b, d), 位与 (c, d)))
.如果真结束
返回 (位异或 (b, c, d))
.子程序 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)
.子程序 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] = bit_rol (位异或 (w [j - 3 + 1], w [j - 8 + 1], w [j - 14 + 1], w [j - 16 + 1]), 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)
.子程序 rstr_hmac_sha1, 字节集
.参数 data, 字节集
.参数 key, 字节集
.局部变量 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)
.如果真结束
' 本源码来自三叶资源网(www.sanye.cx)
.变量循环首 (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 (数组容器))
.子程序 逻辑右移, 整数型, , (逻辑右移) (算术右移) 寄存器,1
.参数 欲移动的整数, 整数型
.参数 欲被移动的位数, 字节型
置入代码 ({ 81, 139, 69, 8, 138, 77, 12, 211, 232, 89, 139, 229, 93, 194, 8, 0 })
返回 (-1)@资源源码站
- 上一篇: 易语言驱动内核命令源码
- 下一篇: 易语言转换到masm代码源码
猜你喜欢
- 2025-01-04 hook抓取电脑和安卓交互的TCP请求,Tcp-adb源码分享
- 2025-01-03 易语言取文件真实创建时间
- 2025-01-03 易语言实现彩色会闪会抖动的字,而且还在标题栏
- 2024-06-28 通讯录VCF文件生成源码
- 2024-03-16 2024无模块静默取已登录QQ
- 2024-03-16 批量转换PPT为PDF源码
- 2024-03-15 串口相关, 虚拟串口,枚举串口,PCOMM使用
- 2024-03-14 易语言取Unix时间戳源码
- 2024-03-13 易语言源码 安卓 ADB调试桥 真机调试
- 2024-03-11 易语言控件自动缩放源码
欢迎 你 发表评论:
- 百度站内搜索
- 关注微信公众号
- 网站分类
-
- 网站公告
- 电子书书籍
- 程序员工具箱
- 编程工具
- 易语言相关
- 网络相关源码
- 图形图像源码
- 系统工具源码
- 易语言模块源码
- 易语言支持库
- 数据库类源码
- 易语言例程
- 易语言游戏开发
- 易语言模块
- 多媒体类源码
- 易语言资源网
- 易语言视频教程
- JS分析教程
- 易语言图文教程
- 易语言常见问题及笔记
- 工具源码
- 易语言版本
- 网络编程
- javascript
- PHP编程
- html
- 正则表达式
- 面试题
- nodejs
- 其它综合
- 脚本专栏
- python
- 按键精灵相关
- 按键精灵图文教程
- 按键精灵视频教程
- 按键精灵Q语言
- 按键精灵安卓版
- golang
- 游戏安全
- 火山相关
- 火山安卓软件
- 火山常见问题及笔记
- 火山安卓源码
- 火山视频教程
- 火山PC版本下载
- 火山PC视窗例程
- 互联网那些事
- 引流推广
- 项目揭秘
- 网络营销
- 营销软件
- QQ营销软件
- 娱乐软件
- 机器人插件
- 培训教程
- 技术教程
- 活动线报
- 数据库
- Redis
- Access
- MongoDB
- Mysql
- 问答
- 其它
- 易语言
- 需求
- 在线教程
- 多线程培训班
- 觅风易语言教程
- 模拟系列教程
- 集中营易语言教程
- 历史数据
- 随机tag








已有8位网友发表了看法:
学不会易语言 评论于 [2019-06-06 10:04:23] 回复
易语言sha算法
易语言TV 评论于 [2019-08-07 21:22:21] 回复
易语言hash_hmac
易语言核心库 评论于 [2019-10-05 23:32:23] 回复
易语言sha1加密
易语言教程 评论于 [2019-11-02 23:15:38] 回复
易语言+base64+加密
易语言 评论于 [2020-05-09 14:12:16] 回复
易语言hash_hmac
编程资源 评论于 [2021-09-06 23:10:40] 回复
易语言置入代码sha1
易语言资源 评论于 [2021-12-30 22:41:37] 回复
1732584193 -271733879 -1732584194