实验一:希尔密码(Hill Cipher)的实现
姓名 班级 学号
实验目的
通 过 实 验 , 使 学 生 对 古 典 密 码 学 有 充 分 的 认 识 ; 学 会 正 确 使 用 编 程 语 言
(C、Mathematica、Maple 等)实现希尔密码,验证课堂中所学的古典密码算法;为学习现
代密码算法及其应用奠定基础。
实验内容及要求
1、学生自己随机选取一个 55 矩阵,判断是否可以作为密钥
2、利用所选密钥,对给定的 5 元明文信息进行加解密
3、对加密得到的密文进行解密,验证结果的正确性
实验结果(可续页)(包括实验代码、实验结果)
实验代码
#include<iostream>
#include<string>
#include<ctime>
#include<cstdlib>
using namespace std;
const int V=5;
int gcd(int a,int b){
if(a%b==0) return b;
return gcd(b,a%b);
}
int det(int s,int a[V][V]){
if(s==2) return a[0][0]*a[1][1]-a[0][1]*a[1][0];
int b,c[V][V],m=0,n=0,sum=0;
for(int i=0;i<s;i++){
for(b=0;b<s-1;b++){
if(b<i) m=0;
else m=1;
for(int j=0;j<s-1;j++)
c[b][j]=a[b+m][j+1];
}
if(i%2==0) n=1;
else n=-1;
sum+=a[i][0]*n*det(s-1,c);