凯撒密码:
古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符
原文: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
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
----------------------------------------------------------------------------------------------------
算法实现:
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
plaintext:纯文本,指用二进制编码表示字符的一种文件。
shift:实现数据转移的函数。
chars:表示字符类型。
length:是用于计算、元组、字符串、字典等数据类型中元素的个数。
for ()in ():第一个括号是变量名;第二个是可迭代对象。
mod:取模运算符。取模:除数符号是什么,得数符号就是什么。
取余:被除数符号是什么,得数符号就是什么。
---------------------------------------------------------------------------------------------------------------------------------
例题
如果明文信息为‘cryptoisfun’,使用凯撒加密算法,且密钥为25,那么加密的结果是?请选择!
a. dszqupjtgvo
b. bqxosnhretm
c. tyxpbqmgien
d. none of the above
>> caesarCode('cryptoisfun',25)
ans =
bqxosnhretm
向左移25,及出现答案bqxosnhretm,故选b。
总结 凯撒密码是古典密码的一种,为单表代替密码,可是安全性不高容易暴力破解。