3 月30 日 古典加密算法playfair 算法的C++实现 Playfair算法 利用用户输入的字符串作为密钥构造5*5矩阵: 首先, 从左到右、从上到下填入该密钥中的字母, 并去除重复的字母(两个 相同字母只取前一个); 其次, 按照字母表顺序将其余字母填入矩阵的剩余空间. 字母 I 和 J 被算作一个字母, 可以根据使 用者的意愿在形成密文时确定用I 或 J.利用该矩阵对字符进行变换加密,只对英文字母有效,但可扩充. 把字符串分为两个一对的明文对并按如下变换规则进行变换: (1)一对明文字母如果是重复的,则在这对明文字母种间插入一个填充字符; (2)如果分割后的明文字母对在矩阵的同一行中都出现,则分别用矩阵中其右侧的字母代替,行的最后一个字母由行的第一个字母代替; (3)如果分割后的明文字母对在矩阵的同一列中都出现,则分别用矩阵中其下方的字母代替,列的最后一个字母由列的第一个字母代替; (4)如果分割后的明文字母对既不在矩阵的同一列中都出现也不在矩阵的同一行中都出现,密文是这两个字母所在的长方形的另两个顶点; (5)如果明文有奇数个字母,末尾加一个无效字母。 #include #include using namespace std; void decrypt();//解密函数 void encrypt();//加密函数 void main() { cout<<"****************************Playfair算法加解密程序 ***************************"<>n; if(n<1||n>3)cout<<"无该项操作,请重来:"<