仿射密碼

Lois發表於2020-07-19

仿射密碼

仿射密碼加密思路:首先將明文乘以金鑰的一部分,然後再加上金鑰的剩餘部分。

假設 x,y,a,b\in Z_{26}\\ 加密:e_k(x) = y\equiv a·x + b\ mod\ 26\\ 解密:d_k(y) = x\equiv a^{-1}·(y-b)\ mod\ 26\\ 金鑰為:k = (a,b), 且滿足限制條件 gcd(a,26) = 1

解密可以很容易地從加密函式中推匯出來:

a·x+b\equiv y\ mod\ 26\\ a·x\equiv (y-b)\ mod \ 26\\ x\equiv a^{-1}·(y-b)\ mod\ 26

gcd(a, 26) = 1 這個限制條件來源於這樣一個事實:解密時需要求金鑰引數 a 的逆元。如果逆元存在,則元素 a 與模數必須為互素。因此, a 必須在如下集合中:

a\in \left\{1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 \right\}

那麼,我們怎樣找到a^{-1}?目前我們只能透過試錯法得到:對於給定的 a, 只需一次嘗試所有可能的值a^{-1}, 直到得到:

a·a^{-1}\equiv 1\ mod\ 26

本作品採用《CC 協議》,轉載必須註明作者和本文連結
Hacking

相關文章