|
- .版本 2
- .支持库 dp1
- .程序集 窗口程序集_启动窗口
- .程序集变量 私钥, 文本型
- .子程序 __启动窗口_创建完毕
- .局部变量 防伪码, 文本型
- ' 在每一条短信尾部加上此防伪码,可轻松通过官网查询短信是否是由官网发送的。
- ' 短信防伪码由24位数字组成,即使不用看发送方号码也可以查到是否是由官网发送的。
- ' 201801011234567890301264
- ' |------A-----|-B-|--C--|
- ' A:短信发送日期时间 14位,上方的防伪码生成日期时间为2018年1月1日12时34分56秒
- ' B:短信接收的手机尾号 4位 上方为手机尾号7890的用户接收的此条短信。
- ' C:校验码 6位 由专业算法计算而出,伪基站没有算法所以无法伪造出这个校验码。
- ' 共需要2个标签 2个编辑框 3个按钮 附件我就不上了。
- 私钥 = “DKplOeOj2OyVDQrIbDib4dJzkKd0oAgt”
- 置随机数种子 ()
- 宽度 = 350
- 高度 = 150
- 边框 = 3
- 标题 = “短信防伪码”
- 标签1.左边 = 8
- 标签1.顶边 = 8
- 标签1.宽度 = 56
- 标签1.高度 = 24
- 标签1.标题 = “手机尾号:”
- 标签2.左边 = 8
- 标签2.顶边 = 40
- 标签2.宽度 = 56
- 标签2.高度 = 24
- 标签2.标题 = “防伪码:”
- 编辑框1.左边 = 72
- 编辑框1.顶边 = 8
- 编辑框1.宽度 = 56
- 编辑框1.高度 = 24
- 编辑框1.最大允许长度 = 24
- 编辑框1.输入方式 = 3
- 编辑框2.左边 = 72
- 编辑框2.顶边 = 40
- 编辑框2.宽度 = 168
- 编辑框2.高度 = 24
- 编辑框2.最大允许长度 = 24
- 编辑框2.输入方式 = 3
- 按钮1.左边 = 136
- 按钮1.顶边 = 8
- 按钮1.宽度 = 40
- 按钮1.高度 = 24
- 按钮1.标题 = “随机”
- 按钮2.左边 = 184
- 按钮2.顶边 = 8
- 按钮2.宽度 = 40
- 按钮2.高度 = 24
- 按钮2.标题 = “生成”
- 按钮3.左边 = 248
- 按钮3.顶边 = 40
- 按钮3.宽度 = 40
- 按钮3.高度 = 24
- 按钮3.标题 = “查询”
- .子程序 补0, 文本型
- .参数 整数, 整数型
- .参数 补的0数, 整数型
- .局部变量 整数长度, 整数型
- 按钮2.左边 = 184
- 按钮2.顶边 = 8
- 按钮2.宽度 = 40
- 按钮2.高度 = 24
- 按钮2.标题 = “生成”
- 整数长度 = 取文本长度 (到文本 (整数))
- 返回 (取重复文本 (补的0数 - 整数长度, “0”) + 到文本 (整数))
- .子程序 取数字日期时间, 文本型
- .参数 日期时间, 日期时间型
- .局部变量 返回值, 文本型
- 返回值 = 补0 (取年份 (日期时间), 4)
- 返回值 = 返回值 + 补0 (取月份 (日期时间), 2)
- 返回值 = 返回值 + 补0 (取日 (日期时间), 2)
- 返回值 = 返回值 + 补0 (取小时 (日期时间), 2)
- 返回值 = 返回值 + 补0 (取分钟 (日期时间), 2)
- 返回值 = 返回值 + 补0 (取秒 (日期时间), 2)
- 返回 (返回值)
- .子程序 签防伪码, 文本型
- .参数 日期时间, 日期时间型
- .参数 手机尾号, 整数型
- .局部变量 返回值, 文本型
- .局部变量 校验码_字节集, 字节集
- .局部变量 校验码, 整数型
- 返回值 = 取数字日期时间 (日期时间)
- 返回值 = 返回值 + 补0 (手机尾号, 4)
- 校验码_字节集 = 十六进制到字节集 (取文本左边 (取数据摘要 (到字节集 (返回值 + 私钥)), 6))
- 校验码 = 到整数 (取文本右边 (到文本 (取颜色值 (校验码_字节集 [1], 校验码_字节集 [2], 校验码_字节集 [3])), 6))
- 返回值 = 返回值 + 补0 (校验码, 6)
- 返回 (返回值)
- .子程序 十六进制到字节集, 字节集, 公开
- .参数 文本, 文本型
- .局部变量 计数, 整数型
- .局部变量 返回值, 字节集
- .局部变量 计数2, 整数型
- .局部变量 文本长度, 整数型
- 文本长度 = 取文本长度 (文本)
- .如果真 (位与 (文本长度, 1) = 1)
- 输出调试文本 (“十六进制文本转字节集不得为奇数字节。”)
- 返回 ({ })
- .如果真结束
- 返回值 = 取空白字节集 (文本长度 ÷ 2)
- .变量循环首 (1, 文本长度, 2, 计数)
- 计数2 = 计数2 + 1
- 返回值 [计数2] = 二位十六进制转字节 (取文本中间 (文本, 计数, 2))
- .变量循环尾 ()
- 返回 (返回值)
- .子程序 二位十六进制转字节, 字节型, 公开
- .参数 十六进制文本, 文本型
- 十六进制文本 = 到大写 (取文本左边 (十六进制文本, 2))
- 返回 (位或 (左移 (一位十六进制到十进制 (取文本左边 (十六进制文本, 1)), 4), 一位十六进制到十进制 (取文本右边 (十六进制文本, 1))))
- .子程序 一位十六进制到十进制, 字节型, 公开
- .参数 十六进制文本, 文本型
- .局部变量 十六进制文本2, 文本型
- .局部变量 计数, 整数型
- 十六进制文本 = 到大写 (取文本左边 (十六进制文本, 1))
- 十六进制文本2 = “0123456789ABCDEF”
- .计次循环首 (16, 计数)
- .如果真 (取文本中间 (十六进制文本2, 计数, 1) = 十六进制文本)
- 返回 (计数 - 1)
- .如果真结束
- .计次循环尾 ()
- 输出调试文本 (“发现不是十六进制的字符。”)
- 返回 (0)
- .子程序 字节集到十六进制, 文本型, 公开
- .参数 字节集, 字节集
- .参数 大写, 逻辑型, 可空
- .局部变量 字节集长度, 整数型
- .局部变量 返回值, 文本型
- .局部变量 计数, 整数型
- .局部变量 十六进制文本, 文本型
- 字节集长度 = 取字节集长度 (字节集)
- .如果 (大写)
- 十六进制文本 = “0123456789ABCDEF”
- .否则
- 十六进制文本 = “0123456789abcdef”
- .如果结束
- .计次循环首 (字节集长度, 计数)
- 返回值 = 返回值 + 取文本中间 (十六进制文本, 右移 (字节集 [计数], 4) + 1, 1) + 取文本中间 (十六进制文本, 位与 (字节集 [计数], 15) + 1, 1)
- .计次循环尾 ()
- 返回 (返回值)
- .子程序 _按钮2_被单击
- 编辑框2.内容 = 签防伪码 (取现行时间 (), 到整数 (编辑框1.内容))
- .子程序 _按钮1_被单击
- 编辑框1.内容 = 补0 (取随机数 (0, 9999), 4)
- .子程序 _按钮3_被单击
- 核验防伪码 (编辑框2.内容)
- .子程序 核验防伪码, 逻辑型
- .参数 防伪码, 文本型
- .局部变量 数据码, 文本型
- .局部变量 校验码, 文本型
- .局部变量 校验码_字节集, 字节集
- .局部变量 校验码_整数, 整数型
- .局部变量 正确的校验码, 文本型
- .局部变量 时间, 日期时间型
- .局部变量 手机尾号, 文本型
- .如果真 (取文本长度 (防伪码) ≠ 24)
- 信息框 (“防伪码长度不为24为!”, 16, , )
- 返回 (假)
- .如果真结束
- 数据码 = 取文本左边 (防伪码, 18)
- 手机尾号 = 取文本右边 (数据码, 4)
- 时间 = 到时间 (取文本左边 (数据码, 14))
- .如果真 (时间 = [100年1月1日])
- 信息框 (“无效的日期时间!”, 16, , )
- 返回 (假)
- .如果真结束
- 校验码 = 取文本右边 (防伪码, 6)
- 校验码_字节集 = 十六进制到字节集 (取文本左边 (取数据摘要 (到字节集 (数据码 + 私钥)), 6))
- 校验码_整数 = 到整数 (取文本右边 (到文本 (取颜色值 (校验码_字节集 [1], 校验码_字节集 [2], 校验码_字节集 [3])), 6))
- 正确的校验码 = 补0 (校验码_整数, 6)
- .如果 (正确的校验码 = 校验码)
- 信息框 (“该防伪码是有效的! ” + #换行符 + “该短信于” + 到文本 (时间) + “发送给了手机尾号为” + 手机尾号 + “的用户。”, 64, , )
- 返回 (真)
- .否则
- 信息框 (“该防伪码是无效的!” + #换行符 + “该防伪码可能是由伪基站或其他网站生成的。”, 16, , )
- 返回 (假)
- .如果结束
- 返回 (假)
复制代码
|
|