[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 3# 328612167

QWERTY密码:加密与解密
http://demon.tw/programming/qwerty-abcdef.html

  1. 'Author: Demon
  2. 'Website: http://demon.tw
  3. 'Date: 2012/2/9
  4. Function FromQwerty(str)
  5.     Dim d, s, t, i, c, r
  6.     s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  7.     t = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
  8.     Set d = CreateObject("Scripting.Dictionary")
  9.     For i = 1 To 52
  10.         d(Mid(t, i, 1)) = Mid(s, i, 1)
  11.     Next
  12.     For i = 1 To Len(str)
  13.         c = Mid(str, i, 1)
  14.         If d.Exists(c) Then
  15.             r = r & d(c)
  16.         Else
  17.             r = r & c
  18.         End If
  19.     Next
  20.     FromQwerty = r
  21. End Function
  22. WScript.Echo FromQwerty("OLSQFR")
  23. 'Author: Demon
  24. 'Website: http://demon.tw
  25. 'Date: 2012/2/9
  26. Function ToQwerty(str)
  27.     Dim d, s, t, i, c, r
  28.     s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  29.     t = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
  30.     Set d = CreateObject("Scripting.Dictionary")
  31.     For i = 1 To 52
  32.         d(Mid(s, i, 1)) = Mid(t, i, 1)
  33.     Next
  34.     For i = 1 To Len(str)
  35.         c = Mid(str, i, 1)
  36.         If d.Exists(c) Then
  37.             r = r & d(c)
  38.         Else
  39.             r = r & c
  40.         End If
  41.     Next
  42.     ToQwerty = r
  43. End Function
  44. WScript.Echo ToQwerty("I LOVE YOU")
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

本帖最后由 yu2n 于 2015-7-15 14:39 编辑

重复造个轮子……
  1. '加密
  2. Msgbox Qwerty("ABCDEF", 0)
  3. '解密
  4. Msgbox Qwerty("O SGCT NGX", 1)
  5. 'Qwerty() 如果 QWERTY 对应 ABCDEF 的话,那么其他字母的对应关系就是分别按照键盘顺序和字母顺序排列……
  6. Function Qwerty(ByVal str, ByVal mode)
  7.   Dim sSrc, sDes, sTmp, arrSrc(), arrDes(), arrTmp(), a, b
  8.   sSrc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  9.   sDes = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
  10.   If mode<>0 Then sTmp=sSrc : sSrc=sDes : sDes=sTmp
  11.   ReDim arrSrc(Len(sSrc)) : ReDim arrDes(Len(sSrc)) : ReDim arrTmp(Len(str))
  12.   For a=0 To Len(sSrc)-1
  13.     arrSrc(a)=Mid(sSrc, a+1, 1) : arrDes(a)=Mid(sDes, a+1, 1)
  14.   Next
  15.   For b=0 To Len(str)-1
  16.     arrTmp(b)=Mid(str, b+1, 1)
  17.     For a=0 To Len(sSrc)-1
  18.       If arrTmp(b)=arrSrc(a) Then arrTmp(b)=arrDes(a) : Exit For
  19.     Next
  20.   Next
  21.   Qwerty=Join(arrTmp,"")
  22. End Function
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

回复 6# 328612167

Qwerty() 函数本身就没打算支持数字和特殊字符。支持了还叫 Qwerty() ?

当然,稍作修改,即可加入数字、特殊字符支持。

示例:加入1234567890的支持:
  1.   sSrc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  2.   sDes = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
复制代码
改为
  1.   sSrc = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  2.   sDes = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm0123456789"
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

本帖最后由 yu2n 于 2015-7-17 10:22 编辑

回复 8# 328612167

a-Z,0-9 都教给你了,加几个特殊字符应该不难?

只需要 sSrc、sDes 保证唯一对应关系即可,随机打乱顺序……

纯英文、纯数字、特殊字符、汉字……原理都是一样的。

下面是英文、纯数字、特殊字符的对应。
  1. 将纯英文
  2.   sSrc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  3.   sDes = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
  4. 改为英文、纯数字、特殊字符
  5.   sSrc = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/*-+.~!@#$%^&*()_{}|:""<>?=[];',.\"
  6.   sDes = "/*-+.~!@#$%^&*()_{}|:""<>?=[];',.\0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
复制代码
不罗嗦,下面贴代码:
  1. Option Explicit
  2. '加密
  3. Msgbox "Hello Word 加密后:" & MyEncryption("Hello Word", 0)
  4. '解密
  5. Msgbox "{7EEH \HK6 解密后:" & MyEncryption("{7EEH \HK6", 1)
  6. Function MyEncryption(ByVal str, ByVal mode)
  7.   Dim sSrc, sDes, sTmp, arrSrc(), arrDes(), arrTmp(), a, b
  8.   sSrc = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/*-+.~!@#$%^&*()_{}|:""<>?=[];',.\"
  9.   sDes = "/*-+.~!@#$%^&*()_{}|:""<>?=[];',.\0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  10.   If mode<>0 Then sTmp=sSrc : sSrc=sDes : sDes=sTmp
  11.   ReDim arrSrc(Len(sSrc)) : ReDim arrDes(Len(sSrc)) : ReDim arrTmp(Len(str))
  12.   For a=0 To Len(sSrc)-1
  13.     arrSrc(a)=Mid(sSrc, a+1, 1) : arrDes(a)=Mid(sDes, a+1, 1)
  14.   Next
  15.   For b=0 To Len(str)-1
  16.     arrTmp(b)=Mid(str, b+1, 1)
  17.     For a=0 To Len(sSrc)-1
  18.       If arrTmp(b)=arrSrc(a) Then arrTmp(b)=arrDes(a) : Exit For
  19.     Next
  20.   Next
  21.   MyEncryption=Join(arrTmp,"")
  22. End Function
复制代码
结果:
  1. Microsoft (R) Windows Script Host Version 5.7
  2. 版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
  3. Hello Word 加密后:{7EEH \HK6
  4. {7EEH \HK6 解密后:Hello Word
复制代码
I wrote a new program? No. 我只是在纯英文字符对应关系里面加了数字、特殊字符而已。Well, say no more you don't understand ...
1

评分人数

『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

返回列表