這很簡單,讓我們來看看它是如何工作的。首先,減去密鑰獲得的加密消息。
enc = msg + key (mod 127)
?
,我們怎樣才能獲得原始消息這很簡單,在兩側減鍵
enc - key = msg + key - key (mod 127)
在這裏,我們得到:
enc - key = msg (mod 127)
欲瞭解更多詳情,請參考Modular arithmetic,我認爲它應屬於group/field/ring之一。我不是數學專家,對於更深入的理論知識,你可以在Number theory找到它們。這裏是精緻代碼:
def encrypt(key, msg):
encryped = []
for i, c in enumerate(msg):
key_c = ord(key[i % len(key)])
msg_c = ord(c)
encryped.append(chr((msg_c + key_c) % 127))
return ''.join(encryped)
def decrypt(key, encryped):
msg = []
for i, c in enumerate(encryped):
key_c = ord(key[i % len(key)])
enc_c = ord(c)
msg.append(chr((enc_c - key_c) % 127))
return ''.join(msg)
if __name__ == '__main__':
key = 'This_is_my_awsome_secret_key'
msg = 'Hello world'
encrypted = encrypt(key, msg)
decrypted = decrypt(key, encrypted)
print 'Message:', repr(msg)
print 'Key:', repr(key)
print 'Encrypted:', repr(encrypted)
print 'Decrypted:', repr(decrypted)
輸出
Message: 'Hello world'
Key: 'This_is_my_awsome_secret_key'
Encrypted: '\x1dNV`O\nkO`fD'
Decrypted: 'Hello world'
我將能夠使加密文件只能使用ASCII可打印字符,如果我做的事: CHR((key_c + string_c)%95 + 32) – 2011-03-16 14:50:58