密碼演算法(2)之凱撒密碼
阿新 • • 發佈:2019-01-24
摘要
本文主要講述凱撒密碼。
1. 這是什麼鬼?
凱撒密碼是一種早期的簡單的對稱密碼,金鑰可以用來加密和解密。其又被稱為移位密碼——很形象!
2. 凱撒密碼的原理
明文:={ 英文字元號串 }
金鑰:=key取{ 0,1,2,...,25 }中任一個數字
加密c(i):=[ m(i)+key mod 26 ]
解密m(i):=[ c(i)-key mod 26 ]
3. 演算法實現
function Y=caesarCode(plaintext, shift) chars = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n',... 'o','p','q','r','s','t','u','v','w','x','y','z']; L=length(plaintext); for i=1:L for j=1:26 if plaintext(i)==chars(j) k=mod(j+shift,26); if k~= 0 Y(i)=chars(k); else Y(i)=chars(26); end end end end
4. 經典題目
如果明文資訊為‘cryptoisfun’,使用凱撒加密演算法,且金鑰為25,那麼加密的結果是?請選擇!
a. dszqupjtgvo
b. bqxosnhretm
c. tyxpbqmgien
d. none of the above
5. 參考答案
>> caesarCode('cryptoisfun',25)
ans =
bqxosnhretm
所以選擇b選項。6. 安全性分析
本文例子中,凱撒密碼的金鑰空間大小隻有32個金鑰,演算法的安全性太差,很容易對密碼進行破解。我們不妨暴力一個一個破解。
>> for i=1:26 caesarCode('bqxosnhretm',i) end
7. 破解結果
暴力破解結果的數目等於凱撒密碼金鑰空間的大小,刪除掉一些沒實際語言意義的,剩下一些看得懂的語句
顯然,只有當加密key==25(即解密key==1)時,破解結果才是有語義意義的,即明文很可能是“cryptoisfun”ans = cryptoisfun ans = dszqupjtgvo ans = etarvqkuhwp ans = fubswrlvixq ans = gvctxsmwjyr ans = hwduytnxkzs ans = ixevzuoylat ans = jyfwavpzmbu ans = kzgxbwqancv ans = lahycxrbodw ans = mbizdyscpex ans = ncjaeztdqfy ans = odkbfauergz ans = pelcgbvfsha ans = qfmdhcwgtib ans = rgneidxhujc ans = shofjeyivkd ans = tipgkfzjwle ans = ujqhlgakxmf ans = vkrimhblyng ans = wlsjnicmzoh ans = xmtkojdnapi ans = ynulpkeobqj ans = zovmqlfpcrk ans = apwnrmgqdsl ans = bqxosnhretm