古典密码之乘法密码

article/2025/9/25 6:46:12

学习目标:

  • 熟练掌握多表古典密码简单乘法加密算法原理及实现。
  • 掌握多表古典密码简单乘法加密算法的应用。

预备知识:

乘法密码是简单代替密码的一种。

它需要预先知道消息元素的个数,加密的过程其实是相当于对明文消息所组成的数组下标进行加密,然后用明文消息中加密后位置所对应的明文字符代替。

多表古典密码简单乘法加密算法:

Step1:确定k和q的值;

Step2:输入相应的密文;

Step3:作变换c=(mi*ki) mod q,字母用ASCII码变为数字后计算;

Step4:得到相对应的明文;

Step5:逐一输出明文。


实验步骤:

创建文件multip.cpp
示例代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
main( )
{
char M[200];
char C[200] ;
int K[200] ,q=26,i,j;
srand( (unsigned)tinme( NULL ) );
for(j=0;j<=200;j++)
{
K[j]=rand( )%50;
}
printf("please input chars:\n");
gets(M) ;
for(i= 0;M[i]!='\0' ;i++)
{
if(M[i]>='a' &&M[i]<='z')
C[i]=((M[i]-'a'+1)*K[i])%q+'a' ;
}
else if(M[i]>='A' &&M[i]<='Z')
C[i]=((M[i]-'A'+1)*K[i])%q+'A';
}
else
C[i]=M[i] ;
}
C[i]='\0';
printf("The result is:\n%s\n",C);
getch() ;
return 0;
}

实验结果如下:
实验结果

思考:

乘法密码加密算法的原理:
它需要预先知道消息元素的个数,加密的过程其实是相当于对明文消息所组成的数组下标进行加密,然后用明文消息中加密后位置所对应的明文字符代替。

设明文消息元素个数为n,密钥为k。

密钥k在选取的时候应满足两个条件:

(1)0<k<n

(2)k与n互素

设明文消息为M,消息元素为m;

则密文消息为C,密文元素为c=m*k mod n;

其解密过程如下:

首先要得到解密密钥,就是要求得加密密钥k模n的逆元 ;

具体求法为k * mod n=1;

然后计算m=c * mod n即可得到明文消息M。

举例说明如下:

英文字母有26个,即n=26;

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

M=m[26]={a , b , c ,d , e , f , g , h , i , j , k , l , m , n , o , p , q , r , s , t , u , v , w , x , y , z };

我们选取密钥k=5;

现在我们对hello进行加密

hello所对应的数组为[8,5,12,12 15];

由于8*5 (mod 26) =40(mod)26=14;

依次类推,可得到加密后的数组为[ 14 , 25,8,8, 23 ];

对应的密文消息就是nyhhw

现在我们开始对nyhhw解密

首先要求得解密密钥 ;

由于5*21(mod 26)=105(mod26)=1;

所以 =21;

nyhhw所对应的数组为[ 14 , 25,8,8, 23 ];

由于14*21(mod26)=294(mod26)=8;

依次类推,可得到解密后的数组为[8,5,12,12 15];

对应的明文消息就是hello。


http://chatgpt.dhexx.cn/article/M6LYN7Fr.shtml

相关文章

古典密码及现代密码分组密码与流密码总结

古典密码及现代密码分组密码与流密码总结 古典密码大部分加密方式是利用替换式密码或移项式密码&#xff0c;有时是二者的混合。一般情况下&#xff0c;一种古典密码体制包含一个字母表&#xff0c;以及一个操作规则或一种操作设备&#xff0c;到了现代基本不可信赖。 1.凯撒…

古典密码体制

文章目录 一、置换密码1、列置换密码2、周期置换密码 二、代换密码1、单表代换密码2、多表代换密码&#xff1a; 一、置换密码 置换密码门又称换位密码&#xff0c;是根据一定的规律重新排列明文&#xff0c;以打乱明文的结构特性。 常见的置换密码有两种&#xff0c;一种是列…

信息安全导论 实验一 古典密码学

一、实验目的与原理 1.实现古典密码学中的移位密码算法和维吉尼亚算法。 2.了解两种算法的原理&#xff0c;并且编写出来。 3.使用语言为C或者Python等。 二、实验内容与记录 位移密码算法&#xff1a; 移位密码算法 在加密的时候需要注意大小写的转换&#xff0c;这个可…

古典密码之维吉尼亚密码实验

学习目标&#xff1a; 维吉尼亚密码是古典密码中非常具有代表的例子。本实验要求用高级语言编写和调试一个简单的维吉尼亚密码实现及解密程序&#xff0c;通过本实验可以加深理解维吉尼亚密码原理。 预备知识&#xff1a; 人们在单一恺撒密码的基础上扩展出多表密码&#xff…

【密码学算法实现】古典密码

文章目录 2.1 代替技术2.1.1 仿射密码2.1.2 单表代替密码2.1.3 Hill密码Hill密码的已知明文攻击 2.1.4 Vigenere密码 2.2 置换技术2.2.1 栅栏密码2.2.2 矩阵密码 作为较为朴素的密码体系&#xff0c;古典密码通常都是对称的。如下图所示&#xff0c;对称密码通常是加密方与解密…

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

文章目录 参考资料替代技术单字母表替代密码凯撒密码移位密码仿射密码针对单字母表替代密码的攻击 多字母表替代密码Vigenere密码Hill密码(希尔密码) 置换技术置换密码的定义案例 本文作为一篇学习笔记&#xff0c;在图片和文字上大量参考了各种密码学书籍&#xff0c;并添加了…

古典密码算法实验c语言,古典密码实验报告.doc

古典密码实验报告.doc 哈尔滨工程大学实验报告实验名称古典密码算法班级学号姓名实验时间2014年4月成绩指导教师实验室名称哈尔滨工程大学实验室与资产管理处制一、实验名称古典密码算法2、实验目的通过编程实现经典的代替密码算法和置换密码&#xff0c;包括移位密码、维吉尼…

古典密码学学习笔记

1.历史 古典密码阶段&#xff1a;1949年以前 近代密码阶段&#xff1a;1949-1975年 现代密码阶段&#xff1a;1976年至今 2.加密方法 古典密码学的加密方法主要有两大类&#xff1a;替代和置换&#xff0c;或者是两者的结合 3.基本密码 1.键盘布局加密 这是一种比较简单也…

古典密码

古典密码将明文的每一个字母代换为字母表中的另一个字母&#xff0c;代换前现将明文字母用等价的十进制数字代替&#xff0c;使用十进制进行运算。 字母abcdefghijklm数字0123456789101112 字母nopqrstuvwxyz数字13141516171819202122232425 根据代换是对每个字母逐个进行还是…

初学古典密码

古典密码 目录 古典密码 Wiki篇 二&#xff0c;凯撒密码Caesar&#xff1a; 三&#xff0c;移位密码 四&#xff0c;Atbash Cipher&#xff08;埃特巴什码&#xff09;&#xff1a; 五&#xff0c;简单替换密码 六&#xff0c;仿射密码(affine cipher&#xff09; 多表…

简单古典密码

1. 简单移位密码 m "{easy_easy_crypto}" k 3124 明文所在位置1234密文所在位置3124 flag{easy_easy_crypto}lafgea{s_eyay_scyprt}o 攻击方法:肉眼识别/爆破秘钥/根据flag字符串逆推 2. 曲路密码 明文填入一个表中&#xff0c;并按照一定的曲路遍历攻击方法…

古典密码技术

古典密码技术 古典密码是密码学中的其中一个类型&#xff0c;其大部分加密方式都是利用替换式密码或移项式密码&#xff0c;有时则是两者的混合。其于历史中经常使用&#xff0c;但在现代由于计算机的出现&#xff0c;使得古典密码解密已经不再困难&#xff0c;已经很少使用&a…

古典密码简记

目录 概述 传统隐写 替换密码技术 换位密码技术&#xff1a; 安全性分析 概述 古典密码只是对字母进行变换&#xff0c;而现代密码算法是对比特流进行变换。 古典密码技术比较简单&#xff0c;通常 采用手工或机械操作来对明文进行加密和解密的。&#xff08;例&#xf…

常见古典密码

古典密码 文章目录 古典密码前言1.Affine(仿射加密)2.Bacon(培根加密)3.Brainfuck4.Caesar(凯撒加密)5.Fence(栅栏加密)6.Fenham(费纳姆加密)7.Morse(摩斯密码)8.Pigen(猪圈加密)9.Vigenere(维吉尼亚加密) 前言 系统的学习了一下古典密码&#xff0c;这里大概整理一下主要的加…

古典密码学

主要划分方式及其分类 按密钥方式划分&#xff1a;对称&#xff0c;非对称 按明文处理方式分&#xff1a;块密码&#xff0c;流密码 按编制原理划分&#xff1a;代换&#xff0c;置乱 对称加密算法 对称加密算法 对称加密算法&#xff08;synmetric algorithm&#xff09;&…

古典密码总结

古典密码 凯撒密码凯撒位移&#xff08;中文版&#xff09; 栅栏密码棋盘密码乘法密码仿射密码希尔密码摩斯电码猪圈密码键盘密码参考 凯撒密码 加密公式&#xff1a;密文 (明文 位移数) Mod 26 解密公式&#xff1a;明文 (密文 - 位移数) Mod 26 凯撒位移&#xff08;中…

古典密码(部分合集)

古典密码 一. 移位密码1. 简单移位密码2. 曲路密码3. 云影密码4. 栅栏密码 二. 代替密码单表代替密码1.凯撒密码2.ROT133.埃特巴什密码4.经典单表替代密码5.摩斯密码6.培根密码7.图形替换密码猪圈密码圣堂武士密码标准银河密码 8.仿射密码 多表代替密码1.棋盘密码PlayfairPolyb…

密码学:古典密码.

密码学&#xff1a;古典密码. 古典密码是密码学的一个类型&#xff0c;大部分加密方式是利用替换式密码或移项式密码&#xff0c;有时是两者的混合。古典密码在历史上普遍被使用&#xff0c;但到现代已经渐渐不常用了。一般来说&#xff0c;一种古典密码体制包含一个字母表(如…

古典密码汇总。

一、密码类型汇总 23、维吉尼亚密码&#xff08;Vigenre Cipher&#xff09; 【Vigenre Cipher】 由于频率分析法可以有效的破解单表替换密码&#xff0c;法国密码学家维吉尼亚于1586年提出一种多表替换密码&#xff0c;   即维吉尼亚密码&#xff0c;也称维热纳尔密码。维…

SourceTree的使用

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端&#xff0c;拥有可视化界面&#xff0c;容易上手操作。同时它也是Mercurial和Subversion版本控制系统工具。支持创建、提交、clone、push、pull 和merge等操作。 二、下载安装SourceTree步骤 1、下载地址&#xf…