您的位置:首页 » 实验报告答案 » 现代密码学实验报告 » 现代密码学 第二版 实验报告及答案 (陈鲁生)

现代密码学 第二版 实验报告及答案 (陈鲁生)

现代密码学 第二版 实验报告及答案 (陈鲁生) - 封面

实验报告配套教材:

书名:现代密码学 第二版
作者:陈鲁生 沈世镒
出版社:科学出版社

实验报告概述:

一、实验目的 通过实现简单的古典密码算法,理解密码学的相关概念如明文(plaintext)、密文(ciphertext)、加密密钥(encryption key)、解密密钥(decryption key)、加密算法(encryption algorithm)、解密算法(decryption algorithm)等。 二、实验内容 1)用C\C++语言实现仿射变换(Affine)加/解密算法;2)用C\C++语言实现统计26个英文字母出现的频率的程序;3)利用仿射变换加/解密程序对一段较长的英文文章进行加密,再利用统计软件对明文和密文中字母出现的频率进行统计并作对比,观察有什么规律。 放射变换: 加密: 解密: 其中a, b为密钥, ,且gcd(a, 26)=1 实验要求:加/解密程序对任意满足条件的a、b都能够处理。 三、实验步骤 (1)统计26个英文字母出现的频率的程序 #include<iostream> #include<fstream> #include<vector> using namespace std; void main(){ ifstream in("a.txt"); vector<int> s; vector<int> n(26,0); for(int i=0;i<26;++i) s.push_back(97+i); for(char x;in>>x; ) for(int i=0;i<26;++i) if(int(x)==s[i]){ n[i]++;} float sum=0.0; for(int j=0;j<26;++j) sum+=n[j]; cout<<"统计结果如下:"<<endl; for(int k=0;k<26;++k){ // n[k]=n[k]/sum; cout<<' '<<char(k+97)<<"出现的概率为:"<<n[k]/sum<<endl; //cout<<n[k]<<endl; }