昨天在做Arthur's Online Riddle的時(shí)候有這么一道題目:
If QWERTY = ABCDEF then, OLSQFR = ?
Qwerty 是各國使用的基于拉丁字母的標(biāo)準(zhǔn)的打字機(jī)和計(jì)算機(jī)鍵盤。QWERTY 是鍵盤第一行的前六個(gè)字母。鍵的安排順序由克里斯多?!な挔査梗–hristopher Sholes)設(shè)計(jì)的。使用QWERTY排列的打字機(jī)在1874年投入批量生產(chǎn)。從此成為應(yīng)用最廣泛的人機(jī)接口,大部分的計(jì)算機(jī)都是使用 Qwerty 鍵盤。
如果 QWERTY 對應(yīng) ABCDEF 的話,那么其他字母的對應(yīng)關(guān)系就是分別按照鍵盤順序和字母順序排列。
QWERTYUIOPASDFGHJKLZXCVBNM => ABCDEFGHIJKLMNOPQRSTUVWXYZ
一個(gè)一個(gè)查找太麻煩,于是寫了個(gè) QWERTY 解密的 VBS 腳本:
復(fù)制代碼 代碼如下:
'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")
順便也寫了一個(gè) QWERTY 加密的:
復(fù)制代碼 代碼如下:
'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