昨天在做Arthur's Online Riddle的時候有這么一道題目:
If QWERTY = ABCDEF then, OLSQFR = ?
Qwerty 是各國使用的基于拉丁字母的標準的打字機和計算機鍵盤。QWERTY 是鍵盤第一行的前六個字母。鍵的安排順序由克里斯多?!な挔査梗–hristopher Sholes)設計的。使用QWERTY排列的打字機在1874年投入批量生產。從此成為應用最廣泛的人機接口,大部分的計算機都是使用 Qwerty 鍵盤。
如果 QWERTY 對應 ABCDEF 的話,那么其他字母的對應關系就是分別按照鍵盤順序和字母順序排列。
QWERTYUIOPASDFGHJKLZXCVBNM => ABCDEFGHIJKLMNOPQRSTUVWXYZ
一個一個查找太麻煩,于是寫了個 QWERTY 解密的 VBS 腳本:
復制代碼 代碼如下:
'Author: Demon
'Website: http://demon.tw
'Date: 2012/2/9
Function FromQwerty(str)
Dim d, s, t, i, c, r
s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
t = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To 52
d(Mid(t, i, 1)) = Mid(s, i, 1)
Next
For i = 1 To Len(str)
c = Mid(str, i, 1)
If d.Exists(c) Then
r = r d(c)
Else
r = r c
End If
Next
FromQwerty = r
End Function
WScript.Echo FromQwerty("OLSQFR")
順便也寫了一個 QWERTY 加密的:
復制代碼 代碼如下:
'Author: Demon
'Website: http://demon.tw
'Date: 2012/2/9
Function ToQwerty(str)
Dim d, s, t, i, c, r
s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
t = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To 52
d(Mid(s, i, 1)) = Mid(t, i, 1)
Next
For i = 1 To Len(str)
c = Mid(str, i, 1)
If d.Exists(c) Then
r = r d(c)
Else
r = r c
End If
Next
ToQwerty = r
End Function
WScript.Echo ToQwerty("I LOVE YOU")
If QWERTY = ABCDEF then, O SGCT NGX = I LOVE YOU
來源:http://demon.tw/programming/qwerty-abcdef.html