Symmetric

你會如何命名和/或描述這個算法?

  • June 11, 2016

首先:這不是解碼請求或任何東西。這是關於***術語***的。

我們每年兩次向另一個部門發送電子郵件,要求他們為其軟體提供新的許可文件。他們總是反應遲鈍。許可證文件是加密的,但我注意到版本之間只有幾個字元發生變化。我的“本土加密貨幣”感覺刺痛了。我推測更改的字元可能對應於明文中的到期日期。

密文:

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

無論如何,我的問題是

  1. 是否有“特定位置的特定字元始終以相同方式映射”假設的名稱?
  2. 你會如何描述算法?通俗地說,我稱之為“具有滾動偏移的替換密碼”
  1. 我認為這種特殊屬性沒有名稱,但它是多字母替換密碼的明確提示。
  2. 它是一種特殊的多表替換密碼。第一個字母表是一個普通的隨機鍵,而每個連續的字母表是由前一個字母表的一個字元右移生成的。因此,明文(或密文)字母表中的字元數量與字母表的數量一樣多。

引用自:https://crypto.stackexchange.com/questions/32958