Board logo

标题: [问题求助] [已解决]这个vbs文字加密怎么理解? [打印本页]

作者: mglouis    时间: 2011-6-3 18:50     标题: [已解决]这个vbs文字加密怎么理解?

  1. str ="你"
  2. ch=Asc(str)
  3. '加密
  4. ch=ch Xor &HFFFF
  5. MsgBox Chr(ch)
  6. '解密
  7. ch=ch Xor &HFFFF
  8. MsgBox Chr(ch)
复制代码
ch=Asc(str)和ch=ch Xor &HFFFF什么意思
中文没在AscII表中啊?还有  ch xor &HFFFF是怎么计算的
作者: 601997526    时间: 2011-6-3 19:12

asc   返回与字符串的第一个字母对应的 ANSI 字符代码
下面例子中, Asc 返回每一个字符串首字母的 ANSI 字符代码:
  1. Dim MyNumber
  2. MyNumber = Asc("A")      '返回 65。
  3. MyNumber = Asc("a")      '返回 97。
  4. 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://www.bathome.net/) Powered by Discuz! 7.2