- UID
- 73817
注册时间2014-2-5
阅读权限40
最后登录1970-1-1
独步武林
 
TA的每日心情 | 无聊 2025-1-12 11:27 |
---|
签到天数: 447 天 [LV.9]以坛为家II
|
第一段:
.版本 2
.子程序 生成注册码, 文本型
.参数 公司名称, 文本型
.参数 系统编号, 文本型
.参数 用户类型, 整数型
.局部变量 硬件码, 文本型
.局部变量 注册码, 文本型
.局部变量 校验位, 文本型
.局部变量 限制值, 整数型
' 生成硬件码
硬件码 = 生成硬件码()
' 生成注册码
注册码 = 生成注册码核心(公司名称, 系统编号, 用户类型, 硬件码)
' 计算校验位
限制值 = 异或运算(到整数(取文本中间(注册码, 23, 1)), 到整数(取文本中间(注册码, 17, 1)))
限制值 = 异或运算(限制值, 到整数(取文本中间(注册码, 29, 1)))
限制值 = 异或运算(限制值, 到整数(取文本中间(注册码, 11, 1)))
限制值 = 异或运算(限制值, 到整数(取文本中间(注册码, 10, 1)))
校验位 = 取文本右边(到十六进制(限制值), 2)
' 将校验位插入注册码
注册码 = 取文本左边(注册码, 4) + 取文本中间(校验位, 1, 1) + 取文本中间(注册码, 6, 25) + 取文本右边(校验位, 1)
返回 注册码
.子程序 生成硬件码, 文本型
.局部变量 硬件码, 文本型
' 模拟生成硬件码(例如基于 MAC 地址)
硬件码 = 到文本(取硬件信息())
返回 硬件码
.子程序 生成注册码核心, 文本型
.参数 公司名称, 文本型
.参数 系统编号, 文本型
.参数 用户类型, 整数型
.参数 硬件码, 文本型
.局部变量 注册码, 文本型
' 将输入参数拼接成一个字符串
注册码 = 公司名称 + 系统编号 + 到文本(用户类型) + 硬件码
' 使用哈希算法生成注册码
注册码 = 取数据摘要(注册码, #哈希算法_SHA256)
返回 注册码
.子程序 异或运算, 整数型
.参数 值1, 整数型
.参数 值2, 整数型
返回 值1 ⊕ 值2
第二段:
.版本 2
.子程序 校验注册码, 整数型
.参数 注册码, 文本型
.参数 公司名称, 文本型
.参数 系统编号, 文本型
.参数 用户类型, 整数型
.参数 使用次数, 整数型
.局部变量 硬件码, 文本型
.局部变量 预期注册码, 文本型
.局部变量 限制值, 整数型
.局部变量 校验位, 文本型
' 生成硬件码
硬件码 = 生成硬件码()
' 生成预期注册码
预期注册码 = 生成注册码核心(公司名称, 系统编号, 用户类型, 硬件码)
' 初步校验
.如果真(预期注册码 ≠ 取注册码部分(注册码, 1))
返回 2 ' 注册码错误
.如果真结束
' 异或校验1
限制值 = 异或运算(到整数(取文本中间(注册码, 23, 1)), 到整数(取文本中间(注册码, 17, 1)))
限制值 = 异或运算(限制值, 到整数(取文本中间(注册码, 29, 1)))
限制值 = 异或运算(限制值, 到整数(取文本中间(注册码, 11, 1)))
限制值 = 异或运算(限制值, 到整数(取文本中间(注册码, 10, 1)))
校验位 = 取文本右边(到十六进制(限制值), 2)
.如果真(校验位 ≠ 取文本中间(注册码, 5, 1) + 取文本右边(注册码, 1))
返回 2 ' 注册码错误
.如果真结束
' 异或校验2
限制值 = 异或运算(到整数(取文本中间(注册码, 19, 1)), 到整数(取文本中间(注册码, 2, 1)))
限制值 = 异或运算(限制值, 到整数(取文本中间(注册码, 24, 1)))
校验位 = 取文本右边(到十六进制(限制值), 1)
.如果真(校验位 ≠ 取文本中间(注册码, 10, 1))
返回 2 ' 注册码错误
.如果真结束
' 使用次数校验
限制值 = 到整数(取注册码部分(注册码, 2))
.如果真(限制值 ≤ 4000)
.如果真(限制值 ≤ 取绝对值(使用次数))
返回 3 ' 超出使用次数
.如果真结束
.如果真(限制值 ≤ 取绝对值(使用次数) + 10)
返回 取绝对值(使用次数) - 限制值 ' 返回剩余次数
.如果真结束
.如果真结束
返回 1 ' 校验通过
.子程序 取注册码部分, 文本型
.参数 注册码, 文本型
.参数 部分, 整数型
.局部变量 部分长度, 整数型
.局部变量 起始位置, 整数型
部分长度 = 8
起始位置 = (部分 - 1) × 部分长度
返回 取文本中间(注册码, 起始位置 + 1, 部分长度)
第三段:
.版本 2
.子程序 主程序
.局部变量 公司名称, 文本型
.局部变量 系统编号, 文本型
.局部变量 用户类型, 整数型
.局部变量 注册码, 文本型
.局部变量 校验结果, 整数型
公司名称 = “xxxxxx有限公司”
系统编号 = “99”
用户类型 = 1
' 生成注册码
注册码 = 生成注册码(公司名称, 系统编号, 用户类型)
输出调试文本(“生成的注册码:” + 注册码)
' 校验注册码
校验结果 = 校验注册码(注册码, 公司名称, 系统编号, 用户类型, 10)
输出调试文本(“校验结果:” + 到文本(校验结果)) 剩下的不会了 哪位大老帮生成个注册机
|
|