凯撒密码的原理以及实现

凯撒密码是一种古老的加密算法。

密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾经使用密码来传递信息,即所谓的“恺撒密码”,它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。因据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。这是一种简单的加密方法,这种密码的密度是很低的,只需简单地统计字频就可以破译。 现今又叫“移位密码”,只不过移动的为数不一定是3位而已。

密码术可以大致别分为两种,即易位和替换,当然也有两者结合的更复杂的方法。在易位中字母不变,位置改变;替换中字母改变,位置不变。

将替换密码用于军事用途的第一个文件记载是恺撒著的《高卢记》。恺撒描述了他如何将密信送到正处在被围困、濒临投降的西塞罗。其中罗马字母被替换成希腊字母使得敌人根本无法看懂信息。

苏托尼厄斯在公元二世纪写的《恺撒传》中对恺撒用过的其中一种替换密码作了详细的描写。恺撒只是简单地把信息中的每一个字母用字母表中的该字母后的第三个字母代替。这种密码替换通常叫做恺撒移位密码,或简单的说,恺撒密码。

下面是自己写的一个例程:

/******************凯撒加密算法********************/ #include #include using namespace std; int n = 3; //向后移动的位数 string caesarCipher(string str) { string ciphertext; int size = str.size(); for(int i = 0 ; i 90) c = c- 32;//z转化为大写字母的ascii码值 if((c+n) <= 90) ciphertext += (char)(c+n); else ciphertext += (char)(65+(-(90-(c+n)))); } return ciphertext; } int main() { string str = "XYWZ";//明文 string ciphertext = caesarCipher(str);//密文 cout << ciphertext.c_str() << endl; // cout << (int)'a'<<","<<(int)'z'<

你可能感兴趣的:(算法)