序列密碼的加密與解密
明文、密文和金鑰序列都是有單獨位組成,即
x_, y_,s_\in \left\
加密:y_i = e_(x_i)\equiv x_i + s_i\ mod\ 2
解密:x_i = d_(y_i)\equiv y_i + s_i\ mod\ 2
關於序列密碼加密和解密函式有三點需要說明:
為什麼加密和解密使用相同的函式?
我們必須證明解密函式的確可以再次得到明文位x_i。我們已知密文位y_i是通過加密函式 y_i\equiv x_i +s_i\ mod\ 2計算得到的,將這個加密表示式插入到解密函式中可得:
d_(y_i)\equiv y_i + s_i\ mod\ 2\\
\equiv(x_i + s_i) + s_i\ mod\ 2\\
\equiv x_i + s_i + s_i\ mod\ 2\\
\equiv x_i + 2s_i\ mod\ 2\\
\equiv x_i + 0\ mod\ 2\\
\equiv x_i\ mod\ 2\ q.e.d
這裡的巧秒之處在於:表示式(2 s_i\ mod\ 2)的值總是 0,因為2\equiv 0\ mod\ 2。對此另一種理解方式為:s_i的值為 0 ,此時2s_i = 2·0\equiv 0\ mod\ 2;或者s_i = 1, 此時2s_i = 2·1 = 2\equiv 0\ mod\ 2
為什麼模 2 加法會是乙個很好的加密函式?
值得注意的是,xor 函式是完全均衡的,即僅觀察輸出值,輸入位的值為 0 和 1 的概率都是 50%。這一點是 xor 門與其他布林函式(比如 or 門、and 或 nand 門)完全不同的地方。此外,and 和 nand 門不是可逆的
密碼序列的本質究竟是什麼?
事實證明,值s_i 的生成(也稱為金鑰序列)是序列密碼安全性的核心問題。實際上,序列密碼的安全性完全取決於金鑰序列。金鑰序列位s_i本身不是金鑰位。所以,我們如何得到金鑰序列呢?生成金鑰序列其實就是序列密碼的關鍵所在。密碼序列位的核心要求就是對攻擊者而言它必須看上去是隨機的。否則,攻擊者 oscar 就可以猜測該金鑰哦序列位,進而能自行解密。
hacking
python解密密文 如何解密RC2密文?
python3.5 pycrypto 2.7a1 windows rc2加密 示例 print text input with open plaintext.txt w as f f.write text key os.urandom 32 with open rc2key.bin wb as ke...
listfile exe 用正規表示式來找檔案
最近的工作裡,涉及到不少目錄之間的批量操作 產品的部署 資料夾之間的同步等等 工作的環境是 win xp,沒有自帶諸如 linux 下 find 這樣方便的工具。當然,我在我自己的環境裡安裝了 cygwin,但我不能要求其他同事僅僅為了使用這個命令而也裝乙個 cygwin。而且,find 是用萬用字...
軟考 解密字尾表示式
我們接觸這個字尾表示式也叫逆波蘭表示式,其求值過程可以用到 棧來輔助儲存。首先棧是先進後出,計算時總是從棧的最上乙個開始 出棧。我們能明白中綴表示式 平常進行基本運算的。具體這樣理解 將中綴表示式轉換成等價的字尾表示式後,求值 時,不需要再考慮運算子的優先順序,只需從 左到右掃瞄 一遍字尾表達 式即...