首页 > 其他分享 >乘法密码编码实验

乘法密码编码实验

时间:2023-05-27 18:33:06浏览次数:41  
标签:编码 加密 解密 明文 密码 密钥 乘法

【实验目的】

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

【知识点】

乘法密码编码

【实验原理】

1.乘法密码原理

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

2.加密过程:

设明文消息元素个数为n,密钥为k。密钥k在选取的时候应满足两个条件:(1)0<k<n(2)k与n互素设明文消息为M,消息元素为m;则密文消息为C,密文元素为c=mk mod n;3.解密过程:首先要得到解密密钥,就是要求得加密密钥k模n的逆元;具体求法为kmod 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 26M=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];由于85(mod 26)=40(mod)26=14;依次类推,可得到加密后的数组为[14,25,8,8,23];对应的密文消息就是nyhhw。现在开始对nyhhw解密:首先要求得解密密钥;于521(mod 26)=105(mod26)=1;所以=21;nyhhw所对应的数组为[14,25,8,8,23];由于1421(mod26)=294(mod26)=8;依次类推,可得到解密后的数组为[8,5,12,12 15];对应的明文消息就是hello。对应的数学表达方式如下:明文:=M{ 英文字符号串},转换为m{数字串},记录数字个数n密钥:=k取小于n并且与n互为素数的正整数加密c(i):=[ mk mod n]解密m(i):=[ kmod n=1,求得k后,m=cmod n,再将m转换为英文字母串输出]

【软件工具】

操作系统:

Centos7

其他:Python3

【实验目标】

查看乘法密码的源码,执行程序,并使用乘法密码进行加密和解密,分析安全性。

【实验步骤】

查看乘法密码的源码。

可以在系统中打开文档进行代码的查看在Linux系统命令行中输入vi/root/cryptography/Multiplication.py,系统显示出来代码:
image

5查看完毕后,输入:q退出查看,之后对这段代码进行验证,输入以下代码查看到目录下有个Multiplication.py文件。输入命令
image
python3 Multiplication.py执行程序。
image
进行测试程序是否能实现乘法密码加密,得到所要的密文,选择要被加密的明文:ouhnkdawfe。程序中已经规定好了秘钥,所以不需要再次输入秘钥,回车后,它会根据所输入的密钥加密成对应的密文,不同的密钥,加密出来的密文也是不同的。输入明文ouhnkdawfe。
image

进行测试程序是否能实现乘法密码解密,得到所要的明文,根据所输入的密钥加密成对应的密文,不同的密钥,解密出来的密文也是不同的。输入密文ymznghaids。
image
安全性分析乘法密码的密钥空间大小只有26个密钥,算法的安全性较凯撒密码稍有提高,但是仍很容易对密码进行破解。不妨暴力一个一个破解(有兴趣的可以修改代码,让其自动破解)

标签:编码,加密,解密,明文,密码,密钥,乘法
From: https://www.cnblogs.com/magicfat/p/17437145.html

相关文章

  • 工模入口密码
    控制文档:vendor/mediatek/proprietary/packages/apps/Dialer/java/com/android/dialer/dialpadview/SpecialCharSequenceMgr.java因此,进入工模时,dialer界面拨号“”*#2266# 即可查密码 ......
  • elasticsearch-7.12.1集群设置账号密码(亲测可用)
    ES7.7以后的版本将安全认证功能免费开放了。并将X-pack插件集成了到了开源的ElasticSearch版本中。1.在集群的“主节点”上生成证书切换到elastsearch的目录下,使用下列命令生成证书bin/elasticsearch-certutilcert-outconfig/elastic-certificates.p12-pass""2.将生成......
  • 信源编码的代码实现 (香农编码、费诺编码、哈夫曼编码、游程编码、算术编码)
    @[TOC](文章目录)香农编码(1)将信源消息符号按其出现的概率大小依次排列p1≥p2≥...≥pn(2)确定满足下列不等式的整数码长Ki为-log2(pi)≤Ki<-log2(pi)+1(3)为了编成唯一可译码,计算第i个消息的累加概率(4)将累加概率Pi转换成二进制数。(5)取Pi二进数......
  • drf——全局处理异常、接口文档、jwt介绍、based64编码与解码
    全局异常处理原理#对于前端来讲,后端即便报错,也要返回统一的格式,前端便于处理{code:999,msg:'系统异常,请联系系统管理员'}#只要三大认证,视图类的方法出了异常,都会执行一个函数: rest_framework.viewsimportexception_handler#drf只要出了异常就会执行这是drf的配置文件......
  • Windows 密码抓取
    郑重声明:本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。Windows密码抓取1mimikatz抓取密码注:在Windows系统中抓取NTLMHash值......
  • drf全局异常处理,接口文档,jwt介绍和原理,base64编码和解码
    drf全局异常处理:只要三大认证,视图类的方法出了异常,都会执行一个函数:rest_framework.viewsimportexception_handlersetting:REST_FRAMEWORK={'EXCEPTION_HANDLER':'app01.exception.commn_exception_handler',#导入自己写的异常类的路径}......
  • 全局异常处理,接口文档,JWT,base64编码解码
    1全局异常处理#对于前端来讲,后端即便报错,也要返回统一的格式,前端便于处理{code:999,msg:'系统异常,请联系系统管理员'}#只要三大认证,视图类的方法出了异常,都会执行一个函数:rest_framework.viewsimportexception_handler###注意:exception_handler#如果异常对象是......
  • 阿里云服务器Linux MySQL root 密码忘记了如何操作?
    阿里云服务器Linux MySQL root密码忘记了如何操作?假如我们使用的MySQL数据库忘记的账号密码,是能够土工调节配置文件,然后跳过密码方式登录到数据库的。然后在数据库里面修改账号和密码,通常在默认情况下账号为root具体操作步骤如下:1】编辑MySQL配置文件my.cnf【注】在具体的操作......
  • kettlle9.3 密码加解密
    kettlecmdencr.sh-kettle123kettle客户端javascript组件核心对象->新建->javascript脚本->获取变量->限制1->生成记录1//Scripthere//加密varsetValue;setValue=Packages.org.pentaho.di.core.encryption.Encr.encryptPassword('123456');javaimp......
  • Python默认编码错误SyntaxError: Non-ASCII character '\xe5'之解决方法
    在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息:解决方法:python的默认编码文件是用的ASCII码,你将文件存成了UTF-8!!!(文件中存在中文或者其他语言,就会出现此问题!)解决办法很简单!!!在文件开头加入:# -*- coding: U......