C++实现该算法

#include <iostream>using namespace std;
int getNum(char c);
char getLettet(int a);
int main()
{/**本代码以3个字母的长度为例*/int p[3];//用来存储明文int c[3]={0,0,0};//用来存储密文int  k[3][3] ={17,17,5,21,18,21,2,2,19};//密匙cout<<"输入3个小写英文s字母的明文:"<<endl;for(int i=0;i<3;i++){char tem;cin >>tem;p[i]=getNum(tem);}cout<<"密文是:"<<endl;for(int i=0;i<3;i++){for(int j=0;j<3;j++){c[i]+=p[j]*k[j][i];}cout<<getLettet(c[i]%26);}return 0;
}int getNum(char c){//将字符转为数字switch(c){case 'a':return 0;case 'b':return 1;case 'c':return 2;case 'd':return 3;case 'e':return 4;case 'f':return 5;case 'g':return 6;case 'h':return 7;case 'i':return 8;case 'j':return 9;case 'k':return 10;case 'l':return 11;case 'm':return 12;case 'n':return 13;case 'o':return 14;case 'p':return 15;case 'q':return 16;case 'r':return 17;case 's':return 18;case 't':return 19;case 'u':return 20;case 'v':return 21;case 'w':return 22;case 'x':return 23;case 'y':return 24;case 'z':return 25;}return -1;
}char getLettet(int a){//将数字转为明文switch(a){case 0:return 'a';case 1:return 'b';case 2:return 'c';case 3:return 'd';case 4:return 'e';case 5:return 'f';case 6:return 'g';case 7:return 'h';case 8:return 'i';case 9:return 'j';case 10:return 'k';case 11:return 'l';case 12:return 'm';case 13:return 'n';case 14:return 'o';case 15:return 'p';case 16:return 'q';case 17:return 'r';case 18:return 's';case 19:return 't';case 20:return 'u';case 21:return 'v';case 22:return 'w';case 23:return 'x';case 24:return 'y';case 25:return 'z';}return -1;
}

密码学之hill密码相关推荐

  1. 有趣的密码学介绍~古典密码之凯撒密码来咯~

    游说万乘苦不早,著鞭跨马涉远道.仰天大笑出门去,我辈岂是蓬蒿人! 文章目录 前言 正文 古典密码 一.古典密码概述介绍 1.置换密码 2.代换密码 二.古典密码分类介绍 1.置换密码 2.编辑本段代换 ...

  2. hill密码源代码c语言,古典密码(Hill加密算法)(示例代码)

    "Hill的加密与解密" Hill加密是另一种多字母代替密码,与多表代替密码不同的是,Hill密码要求将明文分成同等规模的若干个分组(最后一个分组涉及到填充),每一个分组被整体的加 ...

  3. python密码学凯撒密码_凯撒密码在Python

    python密码学凯撒密码 Hello everyone, in this tutorial you'll learn about Caesar cipher in Python. If you ha ...

  4. hill图matlab代码,Hill密码的加密论文(内含matlab程序代码).doc

    Hill密码的加密论文(内含matlab程序代码) Hill密码的加密,解密与破译 摘要 对于问题1.1:本文采用密码通信,对明文进行加密.利用已知的密钥矩阵,首先,将密文转化为对应表值数字.其次,对 ...

  5. 【密码学篇】密码行业标准汇总(GM)

    [密码学篇]密码行业标准汇总(GM) 截止到2023年03月10日,共130个密码行业标准,适用商用密码应用与安全性评估等密码行业,可点击链接预览或下载标准-[蘇小沐] 文章目录 [密码学篇]密码行业 ...

  6. 密码学基础--仿射密码

     在仿射密码中,加密函数定义为: e(x)=(ax+b)mod26 a,bZ.因为这样的函数被称为仿射函数,所以这样的密码体制也称为仿射密码(可以看出,当a=1时,其对应的正是移位密码). 为了能对密 ...

  7. 08:vigenère密码_密码技术:Vigenére密码,Playfair密码,Hill密码

    08:vigenère密码 1)Vigenére密码 (1) Vigenére Cipher) This technique is an example of Polyalphabetic Subst ...

  8. 【密码学-凯撒密码】

    现代密码学-单表代换密码 凯撒密码原理 移位变换 仿射变换 代码实现-凯撒密码 代码实现-放射变换 凯撒密码原理 凯撒密码的加密代换和解密代换分别为 c=Ek(m)=m+3(mod26)c=E_{k} ...

  9. 斯坦福密码学-3-分组密码block_cipher

    一.What is a block cipher? 1. PRPs 和 PRFs 伪随机函数和伪随机置换 2. PRP和PRF安全定义 安全PRF 安全PRF的定义如下: 伪随机函数SFS_FSF​与 ...

最新文章

  1. 【模拟】不高兴的津津
  2. 如何自学python到做项目-总算明白如何通过项目学习python
  3. spring4声明式事务—02 xml配置方式
  4. VS2010/MFC编程入门之三十(常用控件:树形控件Tree Control 上)
  5. Linux kill指令和killall指令
  6. 2020“高教社”杯全国大学生数学建模竞赛——建模国赛优秀论文
  7. FFmpeg编译找不到库文件
  8. C++ 静态链表(用数组模拟动态链表)
  9. e.target 和 e.srcElement 的使用问题
  10. 上传文件(ajax结合form表单)
  11. mysql 唯一索引为null_mysql 中存在null跟空时创建唯一索引_mysql
  12. 点击添加一行_微信接龙表格操作方法图文教程,以及微信聊天框怎么另起一行...
  13. 一维码,二维码,com.google.zxing
  14. 离散数学 06.05 同构及同态
  15. zabbix为啥持续报警
  16. .NET 高级架构师0003 架构师之路(2)---架构师的职责
  17. 用友畅捷通T+遭受批量勒索攻击处置手册
  18. 数据分析----数据清洗
  19. 麻雀优化算法 优化XGBoost的参数 python代码
  20. Android 2.2 Froyo发布

热门文章

  1. Nginx卡在登录页面不断跳转如何解决?(登不进登录页面)ip_hash机制(还是没解决)
  2. python 如何编写图像标定(标记)(annotation)画框程序?
  3. 给IDEA给类和方法添加注解
  4. //BASE64解码成File文件
  5. vue 固定名称 打包时_vuecli3 配置多环境打包
  6. folderutils.java_值得分享的超全文件工具类FileUtil
  7. spring mvc @ModelAttribute 基本类型 自定义对象解析流程
  8. 「后端小伙伴来学前端了」Vue中 this.$set的用法 | 可用于修改对象中数组的某一个对象、 可用于更新数据到视图
  9. Dockerfile中的保留字指令讲解
  10. android 光晕动画,Android去掉SrollView、GrdiView、RecycleView、ViewPager等可滑动控件滑动到边缘的光晕效果...