找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25745|回复: 10

[问题求助] [已解决]这个vbs文字加密怎么理解?

[复制链接]
发表于 2011-6-3 18:50:32 | 显示全部楼层 |阅读模式
  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是怎么计算的

评分

参与人数 1PB +2 收起 理由
zm900612 + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-6-3 19:12:24 | 显示全部楼层
asc   返回与字符串的第一个字母对应的 ANSI 字符代码
下面例子中, Asc 返回每一个字符串首字母的 ANSI 字符代码:
  1. Dim MyNumber
  2. MyNumber = Asc("A")      '返回 65。
  3. MyNumber = Asc("a")      '返回 97。
  4. MyNumber = Asc("Apple")  '返回 65。
复制代码
xor   对两个表达式进行逻辑“异或”运算。
发表于 2011-6-3 19:18:10 | 显示全部楼层
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 的代码转换。
发表于 2011-6-3 19:30:07 | 显示全部楼层
一个数经过两次 Xor 后和原来一样,即 ch = ch Xor &FFFF Xor $FFFF
 楼主| 发表于 2011-6-3 19:45:58 | 显示全部楼层
我晕  怎么全是搬运  .....................
发表于 2011-6-3 19:48:48 | 显示全部楼层
本帖最后由 batman 于 2011-6-3 19:50 编辑

hffff = -1 ,二进制11111111
11000000 xor 11111111 = 00111111(加密)
00111111 xor 11111111 = 11000000(解密)

ps:楼上两位是来贴手册的?
 楼主| 发表于 2011-6-3 19:58:10 | 显示全部楼层
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"…
发表于 2011-6-3 20:08:28 | 显示全部楼层
hffff = -1 ,二进制11111111
11000000 xor 11111111 = 00111111(加密)
00111111 xor 11111111 = 11000000(解密)

ps:楼上两位是来贴手册的?
batman 发表于 2011-6-3 19:48

本来就是查手册就能解决的问题。
 楼主| 发表于 2011-6-3 20:43:51 | 显示全部楼层
本来就是查手册就能解决的问题。
Demon 发表于 2011-6-3 20:08



大家不用争执啦  
我知道怎么计算啦
我一直追寻那ch值  原来我查错了
“你”  的ascii值是-15133
我直接在电脑的系统工具找的是50403
忘记  汉字是负数没发现自己做错了
发表于 2011-6-3 22:48:30 | 显示全部楼层
大家不用争执啦  
我知道怎么计算啦
我一直追寻那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)。
 楼主| 发表于 2011-6-4 21:36:33 | 显示全部楼层
这个不叫ASCII,应该是GBK。“你”字的GBK代码点是十六进制的C4E3,即十进制50403,但是Asc函数的返回值是Integer子类型,取值范围是-32,768 到 32,767,50403大于32767,溢出,得到-15133(即50403 - 65536)。
Demon 发表于 2011-6-3 22:48


嗯  之前没注意到
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:43 , Processed in 0.076419 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表