乘法密码

简介:实现了乘法密码的加密和解密,能够通过功能3输入加密密钥,得到解密密钥。但是具有局限性,只支持26位英文字母。目的是为了体验乘法密码,所有程序的可靠性不做要求。

#include <iostream>
#include <stdio.h>
#include <string.h>
//#include<math.h>
using namespace std;
char mingwen[1000];
char miwen[1000];
//int ke = 5;
//int kd = 21;
void Shouye();
void Jiami();
void Jiemi();
void Find_Kd();
int gcd(int a,int b);
int main()
{Shouye();
}
void Shouye()
{//首页int choice=0;printf("------------首页------------\n");printf("请选择加密(1)或解密(2)或求密钥Kd(3):");scanf("%d",&choice);if(choice == 1){Jiami();}else if(choice == 2){Jiemi();}else if(choice == 3){Find_Kd();}else{printf("输入有误!");}
}void Jiami()
{   //加密函数int ke;printf("请输入明文:");scanf("%s",mingwen);printf("请输入加密密钥ke(0<ke<26):");scanf("%d",&ke);//printf("%s",mingwen);int l;l = strlen(mingwen);//printf("%d",l);for(int i = 0;i < l;i++){miwen[i] = ((mingwen[i]-96)*ke%26)+96;}for(int i = 0;i < l;i++){printf("%c",miwen[i]);}
}void Jiemi()
{   //解密函数int kd;printf("请输入密文:");scanf("%s",miwen);printf("请输入解密密钥kd(0<kd<26):");scanf("%d",&kd);//printf("%s",miwen);int l;l = strlen(miwen);//printf("%d",l);for(int i = 0;i < l;i++){mingwen[i] = ((miwen[i]-96)*kd%26)+96;}for(int i = 0;i < l;i++){printf("%c",mingwen[i]);}
}void Find_Kd()
{   //计算解密密钥kdprintf("输入加密密钥:");int ke;scanf("%d",&ke);int res;for(int i=1;i<26;i++){//printf("%d,%d\n",i,gcd(26,i));if(gcd(26,i)==1){if(ke*i%26==1)res = i;}}printf("%d",res);
}int gcd(int a,int b)
{   //求最大公约数if(a%b==0) return b;return gcd(b,a%b);
}

密码学——乘法密码实现相关推荐

  1. 密码学基础(二)单表---置换密码 凯撒密码 棋盘密码 乘法密码 仿射密码 多表---vigenere方阵

    1古典密码 (1)置换密码 明文字母重新排列,字母本身不变,但是位置发生变化(倒序或者按照按照数组排列后以行或列重新组合) (2)代替密码 分为单表代替密码和多表代替密码 单表代替密码中代表性的 凯撒 ...

  2. 密码学—仿射密码实验报告

    古典密码算法实验报告 姓名:空の城 学号:你猜 专业班级:网络安全专业 一.实验目的 通过编程实现替代密码算法--仿射密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础. 二.实验原理 仿射 ...

  3. 扩展欧几里得算法求逆元---乘法密码

    欧几里得算法 背景知识: 欧几里得算法:又叫做辗转相除法,用来求两个数的最大公约数.通过辗转相除,当余数为0的时候,最后的除数就是两个数的最大公约数. 例如:求20和11的最大公约数 每次将除数作为下 ...

  4. 【乘法密码】根据乘法密码的加密函数求解密密钥

    乘法密码的加密函数为 c = a × m ( m o d n ) c=a\times m\ (\mathrm{mod}\ n) c=a×m (mod n),其中 a a a和 n n n互质, m m ...

  5. 仿射密码(加法密码+乘法密码)

    仿射密码技术: (加法密码+乘法密码) (可先参见加法密码与乘法密码原理) C= Ek(m)=(k1 m+k2) mod n , K1,K2∈Zn ,gcd(k1,n)=1 M= Dk(c)=k3(c ...

  6. 密码学-古典密码学习笔记

    文章目录 参考资料 替代技术 单字母表替代密码 凯撒密码 移位密码 仿射密码 针对单字母表替代密码的攻击 多字母表替代密码 Vigenere密码 Hill密码(希尔密码) 置换技术 置换密码的定义 案 ...

  7. 古典密码学--移位密码

    首先了解密码学的基本目的是使得两个在不安全的信道中通信的人,通常称为Alice和Bob,以一种使他们的敌手Oscar不能明白和理解通信内容的方式进行通信. 定义 一个密码体制是满足以下条件的五元组(P ...

  8. c++、python实现置换密码(栅栏技术,列置换)、替代密码(加法密码(Caesar密码),乘法密码)

    置换密码 代码如下: #置换密码 a = input('请输入明文:') print("逆序后的密文为:",a[::-1]) 结果如图: 代码如下: #栅栏技术(栏数为7) a = ...

  9. 密码学替换密码c语言编程,古典密码学上机实验

    实验一.传统密码算法 一.实验目的及任务 通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础 二.实验环境 运行Windows操作系统的PC机,具有C语言编译环 ...

最新文章

  1. Commons里的DButil
  2. YUI经验谈 - 自定义事件默认行为
  3. 对java的final,finally,finalize应用场景,你用对了吗
  4. HTML vs XHTML vs DHTML
  5. 微信小程序(2)--下拉刷新和上拉加载更多
  6. asp.net signalR 专题—— 第一篇 你需要好好掌握的实时通讯利器
  7. js距离米转换为千米_泰禾中央广场+恒大未来城双盘大兴,8.4米层高“空中别墅”来袭...
  8. pgm图像缩小C语言,C++将二进制(P5)图像转换为ascii(P2)图像(.pgm)
  9. VMD变分模态分解代码,C++代码下载
  10. 2007word文档删除尾注线
  11. echarts绘制进度条
  12. 兴义智力象机器人_中科院科普讲师专家赴黔西南州做科普报告巡讲
  13. win10任务管理器禁用_如何在Windows 10的文件资源管理器中禁用广告和通知
  14. 吃什么怎么吃关系着民族的命运
  15. Codeforces Round #322 (Div. 2) B. Luxurious Houses 水题
  16. 利用cmd命令创建vue项目
  17. Win10:解决Win10的录音设备只能录制系统内部声音无法录制麦克风声音的问题
  18. [ 7天学习Python编程,第一天]-----1.4 Python main函数:了解__main__【python舵手】
  19. 行为分析(十):姿态估计部分(六):人体关键点(keypoints)生成算法综述
  20. js中onchange事件举例用法

热门文章

  1. lucene全文检索与数据库检索的区别
  2. 如何在自己电脑上建网站
  3. 基于PHP+MySQL医院在线预约平台系统的设计与开发
  4. Paul Hudak谈Haskell
  5. C语言输出字符,字符串的ASCII码的16进制数
  6. 食品行业的新科技总结
  7. FPGA/IC秋招经典100题(含详解)
  8. js随机数和小数取整
  9. Composer update 提示unable to use a proxy,malformed http_proxy
  10. chessboard