电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

现代密码学实验报告(题目+代码)丁朋

现代密码学实验报告(题目+代码)丁朋_第1页
现代密码学实验报告(题目+代码)丁朋_第2页
现代密码学实验报告(题目+代码)丁朋_第3页
实 验 报 告 实验课程名称 现 代 密 码 学 学 院 理学院 年级 0 8 专业班 03 学 生 姓 名 丁朋 学 号 2 5 开 课 时 间 2 0 1 0 至 2 0 1 1 学年第 二 学期 总 成 绩 教师签名 实验项目 名 称 实验一、古典密码(认识密码学) 成绩 一、实验目的 通过实现简单的古典密码算法,理解密码学的相关概念如明文(plaintext)、密文(ciphertext)、加密密钥(encryption key)、解密密钥(decryption key )、加密算法(encryption algorithm)、解密算法(decryption algorithm)等。 二、实验内容 1)用 C\C++语言实现仿射变换(Affine)加/解密算法;2)用 C\C++语言实现统计 26个英文字母出现的频率的程序;3)利用仿射变换加/解密程序对一段较长的英文文章进行加密,再利用统计软件对明文和密文中字母出现的频率进行统计并作对比,观察有什么规律。 放射变换: 加密: 26mod,bammEcba 解密: 26mod1,bcacDmba 其中 a, b 为密钥,25,0ba,且 gcd(a, 26)=1 实验要求:加/解密程序对任意满足条件的 a、b 都能够处理。 三、实验步骤 (1)统计 26 个英文字母出现的频率的程序 #include #include #include using namespace std; void main(){ ifstream in("a.txt"); vector s; vector 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<<"统计结果如下:"< #include #include using namespace std; //////////判断两个数是不是互素(辗转相除)//////// bool gcd(int a){ int f=26,g,r; g=a; do{ r=f%g; f=g; g=r; } while(r); if(f==1) return 1; else return 0; } //////////////////求逆////// int inv(int a){ int x,i; for(i=1;i<=30;++i) if((26*i+1)%a==0) { x=(26*i+1)/a;break;} return x; } //////////////////////////////////////////////////...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

小辰+ 关注
实名认证
内容提供者

出售各种文档和资料

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部