标题: [问题求助] [已解决]这个vbs文字加密怎么理解? [打印本页]
作者: mglouis 时间: 2011-6-3 18:50 标题: [已解决]这个vbs文字加密怎么理解?
- str ="你"
- ch=Asc(str)
- '加密
- ch=ch Xor &HFFFF
- MsgBox Chr(ch)
- '解密
- ch=ch Xor &HFFFF
- MsgBox Chr(ch)
复制代码
ch=Asc(str)和ch=ch Xor &HFFFF什么意思
中文没在AscII表中啊?还有 ch xor &HFFFF是怎么计算的
作者: 601997526 时间: 2011-6-3 19:12
asc 返回与字符串的第一个字母对应的 ANSI 字符代码
下面例子中, Asc 返回每一个字符串首字母的 ANSI 字符代码:- Dim MyNumber
- MyNumber = Asc("A") '返回 65。
- MyNumber = Asc("a") '返回 97。
- MyNumber = Asc("Apple") '返回 65。
复制代码
xor 对两个表达式进行逻辑“异或”运算。
作者: Demon 时间: 2011-6-3 19:18
Asc 函数
返回与字符串的第一个字母对应的 ANSI 字符代码。
Asc(string)
string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
说明
下面例子中, Asc 返回每一个字符串首字母的 ANSI 字符代码:
Dim MyNumber
MyNumber = Asc("A") '返回 65。
MyNumber = Asc("a") '返回 97。
MyNumber = Asc("Apple") '返回 65。
注意 AscB 函数和包含字节数据的字符串一起使用。AscB 不是返回第一个字符的字符代码,而是返回首字节。AscW 是为使用 Unicode 字符的 32 位平台提供的。它返回 Unicode (宽型)字符代码,因此可以避免从 ANSI 到 Unicode 的代码转换。
作者: Demon 时间: 2011-6-3 19:30
一个数经过两次 Xor 后和原来一样,即 ch = ch Xor &FFFF Xor $FFFF
作者: mglouis 时间: 2011-6-3 19:45
我晕 怎么全是搬运 .....................
作者: batman 时间: 2011-6-3 19:48
本帖最后由 batman 于 2011-6-3 19:50 编辑
hffff = -1 ,二进制11111111
11000000 xor 11111111 = 00111111(加密)
00111111 xor 11111111 = 11000000(解密)
ps:楼上两位是来贴手册的?
作者: mglouis 时间: 2011-6-3 19:58
hffff = -1 ,二进制11111111
11000000 xor 11111111 = 00111111(加密)
00111111 xor 11111111 = 11000000(解密)
ps:楼上两位是来贴手册的?
batman 发表于 2011-6-3 19:48
&HFFFF二进制是1111 1111 1111 1111
......................................O__O"…
作者: Demon 时间: 2011-6-3 20:08
hffff = -1 ,二进制11111111
11000000 xor 11111111 = 00111111(加密)
00111111 xor 11111111 = 11000000(解密)
ps:楼上两位是来贴手册的?
batman 发表于 2011-6-3 19:48
本来就是查手册就能解决的问题。
作者: mglouis 时间: 2011-6-3 20:43
本来就是查手册就能解决的问题。
Demon 发表于 2011-6-3 20:08
大家不用争执啦
我知道怎么计算啦
我一直追寻那ch值 原来我查错了
“你” 的ascii值是-15133
我直接在电脑的系统工具找的是50403
忘记 汉字是负数没发现自己做错了
作者: Demon 时间: 2011-6-3 22:48
大家不用争执啦
我知道怎么计算啦
我一直追寻那ch值 原来我查错了
“你” 的ascii值是-15133
我直接在电脑的系统工具找的是50403
忘记 汉字是负数没发现自己做错了
mglouis 发表于 2011-6-3 20:43
这个不叫ASCII,应该是GBK。“你”字的GBK代码点是十六进制的C4E3,即十进制50403,但是Asc函数的返回值是Integer子类型,取值范围是-32,768 到 32,767,50403大于32767,溢出,得到-15133(即50403 - 65536)。
作者: mglouis 时间: 2011-6-4 21:36
这个不叫ASCII,应该是GBK。“你”字的GBK代码点是十六进制的C4E3,即十进制50403,但是Asc函数的返回值是Integer子类型,取值范围是-32,768 到 32,767,50403大于32767,溢出,得到-15133(即50403 - 65536)。
Demon 发表于 2011-6-3 22:48
嗯 之前没注意到
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |