
一、实验目的
通过C语言编程实现替代加密算法,加深对古典密码的了解。
二、实验环境
1.安装Windows XP系统的计算机
2.WinTC
三、实验理论基础
凯撒密码(caeser)是罗马扩张时期朱利斯•凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。
凯撒密码的加密算法极其简单。其加密过程如下:
在这里,明文记为m,密文记为c,加密变换记为E(k1,m)(其中k1为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里k1=k2,不妨记为k)。凯撒密码的加密过程可记为如下一个变换:
c≡m+k mod n (其中n为基本字符个数)
同样,解密过程可表示为:
m≡c+k mod n (其中n为基本字符个数)
对于计算机而言,n可取256或128,m、k、c均为一个8bit的二进制数。显然,这种加密算法极不安全,即使采用穷举法,最多也只要255次即可破译。当然,究其本身而言,仍然是一个单表置换,因此,频率分析法对其仍是有效的。
四、实验内容
凯撒密码及其破解的编程实现
#include main() { char M[100]; char C[100]; int K=3,i; printf("please input chars:\\n"); gets(M); for(i=0;M[i]!='\\0';i++) C[i]=(M[i]-'a'+K)%26+'a'; C[i]='\\0'; printf("The result is:\\n%s\\n",C); getch(); }
