- UID
- 34331
注册时间2007-8-14
阅读权限50
最后登录1970-1-1
感悟天道
TA的每日心情 | 开心 3 天前 |
---|
签到天数: 1992 天 [LV.Master]伴坛终老
|
.版本 2
.程序集 窗口程序集1
.子程序 _按钮1_被单击
.局部变量 name, 文本型
.局部变量 name_len, 整数型
.局部变量 sum, 长整数型
.局部变量 sum1, 文本型
.局部变量 sum2, 整数型
.局部变量 total, 整数型
.局部变量 i, 整数型
.局部变量 i2, 整数型
.局部变量 c, 字节型
.局部变量 d, 字节型
.局部变量 n, 字节型
.局部变量 table, 文本型
.局部变量 sn, 文本型
.局部变量 sn1, 文本型
.局部变量 ma1, 整数型
.局部变量 ma2, 整数型
.局部变量 ma3, 文本型
.局部变量 ma4, 文本型
.局部变量 ma5, 文本型
.局部变量 ma6, 文本型
.局部变量 ma7, 整数型
.局部变量 a, 长整数型
.局部变量 b, 长整数型
.局部变量 g, 长整数型
.局部变量 h, 整数型
.局部变量 j, 整数型
.局部变量 k, 整数型
.局部变量 l, 整数型
.局部变量 m, 整数型
.局部变量 常量1, 整数型
.局部变量 常量2, 整数型
.局部变量 常量3, 整数型
(((name xor table[3i-1]+sum1*(i-1) XOR FFFFFFFF+14d+name_len*(i+3)*name/10+30) xor ADAC)*(i+2)/10+30
table = 编辑框3.内容
name = 编辑框1.内容
name_len = 取文本长度 (name)
.如果 (name_len ≥ 1)
.判断循环首 (i ≤ name_len)
i = i + 1
h = 3 × i - 1
j = i - 1
k = i + 3
c = 取代码 (name, i)
d = 取代码 (table, h)
total = total + c
l = total × j
a = 位异或 (c, d)
b = 位异或 (l, 常量1)
g = a + b + 常量2 + name_len × k × c % 16 + 48
ma1 = 位异或 (g, 常量3) × (i + 2) % 16 + 48
ma6 = 取十六进制文本 (ma1)
ma7 = 到数值 (ma6) - 30
ma4 = 到文本 (ma7) + 到文本 (ma4)
.判断循环尾 ()
ma2 = total × name_len % 100 + 48
ma5 = 取十六进制文本 (ma2)
ma3 = 到文本 (ma4) + “-” + 到文本 (ma5)
m = 取文本长度 (ma3)
.否则
信息框 (“请输入用户名”, 0, “友好提示”)
.如果结束
.判断循环首 (i2 ≤ m)
i2 = i2 + 2
n = 取代码 (ma3, i2)
sum = 位异或 (n, 2) % 10 + 48
sum1 = 取十六进制文本 (sum)
sum2 = 到数值 (sum1) - 30
sn = 到文本 (sum2) + 到文本 (sn)
.判断循环尾 ()
sn1 = “T” + sn
编辑框2.内容 = sn1
程序算法:1.约定:用户名:name; 用户名长度:name_len; 固定码table:ABCDEFGHIJKLMNOPQRSTUVWXYZ;
用户名每位的ASCII值相加结果,记为sum1;
2.计算中间码1:以用户名长度值作为循环次数
((name xor table[3i-1]+sum1*(i-1) XOR FFFFFFFF+14d+name_len*(i+3)*name/10+30) xor ADAC)*(i+2)/10+30
3.计算中间码2: sum1*name_len/64+30
4.最终中间码:T+计算中间码1+"-"计算中间码2
5.中间码还原为注册码:(name or 2)/A +30
问题出在第一部分的循环上,算出的数值不对
输入用户名:lvcaolhx,计算出中间码应为65006967,中间码为44(这一部分正确)
请高手指点迷径!!!!!!
优化代码后,再发上来
更正后的地址:https://www.chinapyg.com/viewthr ... &extra=page%3D1
注意的地方:E循环从0开始
[ 本帖最后由 lvcaolhx 于 2007-11-17 08:02 编辑 ] |
|