Symmetric
你會如何命名和/或描述這個算法?
首先:這不是解碼請求或任何東西。這是關於***術語***的。
我們每年兩次向另一個部門發送電子郵件,要求他們為其軟體提供新的許可文件。他們總是反應遲鈍。許可證文件是加密的,但我注意到版本之間只有幾個字元發生變化。我的“本土加密貨幣”感覺刺痛了。我推測更改的字元可能對應於明文中的到期日期。
密文:
GO9ETBBE GO9ETCBE GO9WTBBE
純文字:
20150101 20150601 20160101
您可以看到它不是替代密碼。但是,特定位置的特定字元始終以相同的方式映射。例如,第三個位置的“1”總是映射到“9”。
我通過對算法的其餘部分(Python 程式碼)進行逆向工程來自娛自樂:
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 " secrets = "C3H8NJ1AX5VRU 2F04KYDIS6PQMOG9TLB7EWZ" def decrypt(ciphertext): plaintext = "" for i,x in enumerate(ciphertext): j = secrets.index(x) j -= i # offset moves backwards 1 each character j %= len(secrets) plaintext += letters[j] return plaintext def encrypt(plaintext): ciphertext = "" for i,x in enumerate(plaintext): j = letters.index(x) j += i j %= len(secrets) ciphertext += secrets[j] return ciphertext
無論如何,我的問題是:
- 是否有“特定位置的特定字元始終以相同方式映射”假設的名稱?
- 你會如何描述算法?通俗地說,我稱之為“具有滾動偏移的替換密碼”
- 我認為這種特殊屬性沒有名稱,但它是多字母替換密碼的明確提示。
- 它是一種特殊的多表替換密碼。第一個字母表是一個普通的隨機鍵,而每個連續的字母表是由前一個字母表的一個字元右移生成的。因此,明文(或密文)字母表中的字元數量與字母表的數量一樣多。