crypto实验报告

Posted 临风而眠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了crypto实验报告相关的知识,希望对你有一定的参考价值。

密码学实验报告

笔者大一小学期参加的一个网络攻防创新实践课的实验报告作业,纯入门级别

实验目标

第一部分

下列密文均使用古典密码加密,请识别并写出下列密文的加密类型。

  1. tsrlnhiafcisiee

  2. wklvlvfdvhu

  3. BAABBAABBBABAAABAABAABAAABAABAAAAABAAAAAAAABAABBBAABBABABAAAAAAAAABBAB

第二部分

下面是一次RSA加密中的数据,请尝试识别可用的攻击方式,写出解密思路,并写出对应的python脚本。

c = 11236059610940155040515420815459088108548438695111162676979740370803612682449595975315521615456835907246170497671938930521670240256368063

e = 3

n = 123814470394550598363280518848914546938137731026777975885846733672494493975703069760053867471836249473290828799962586855892685902902050630018312939010564945676699712246249820341712155938398068732866646422826619477180434858148938235662092482058999079105450136181685141895955574548671667320167741641072330259009

详细步骤

第一部分

​ 解密工具网站:http://ctf.ssleye.com/

​ 网站2:http://www.metools.info/code/

1.栅栏密码基础型

  • 先做的第三个培根密码,解密出来有this is ,然后盲猜这里面也有this is ,去掉this is之后,还剩下:rlniafcee

  • 然后发现thisis被分搁在这串字符的各个地方,那就猜是栅栏密码,然后因为t和h分别是第一个和第六个,相差了5,那我就猜是5栏,所以五个分为一组:

    tsrln
    hiafc
    isiee
    
  • 那么解密结果就是:

thisisrailfence

2.凯撒密码

  • 先做的第三个培根密码,解密出来有this is

  • 然后盲猜这里面也有this is ,然后看到lvlv一样,那肯定就是th isis,那说不定这就是位移的密码,i到l是往后移动两位,s到v也是

  • 那就解决了,移动两位得到答案:

thisiscaser

3.培根密码

根据其全为A、B的特征,可判断其为培根密码,对照规则表可知解密结果为:

thisisbaconian

第二部分

​ RSA加密介绍:https://www.jianshu.com/p/9f7905f2c2a3

1.搜教程

​ 先去不假思索地搜了很多教程,然后看到一个类似的题目,十分高兴,想直接粘代码👻…

可是这个地方一直报错:

可我网上也搜不到报错原因,而且看到了更多的教程都是这样子写的,问了学长才知道那是sage环境下的代码…

2.具体实现

  • 简单了解RSA:

    👉B站通俗讲解链接(感觉这个讲的挺好✌️)

    $m^e\\quad mod\\quad n\\quad=\\quad c $

    原始数据 m m m,求 e e e次幂, e e e可看作加密时的密钥,将 m e m^e me除以 n n n并取余数得到密文 c c c,正向算出 c c c很容易,但是反向推出 m m m很难

    ​ d代表另一个用于解密的密钥

  • e很小,所以可以用低加密指数攻击

  • 原理是已知$m^e\\quad =\\quad kn+ c $ ,在有限时间内枚举 k ,再对(kn + c) 开 e 次方,如果得到整数就很有可能是 m

import gmpy2

c = 11236059610940155040515420815459088108548438695111162676979740370803612682449595975315521615456835907246170497671938930521670240256368063

e = 3

n = 123814470394550598363280518848914546938137731026777975885846733672494493975703069760053867471836249473290828799962586855892685902902050630018312939010564945676699712246249820341712155938398068732866646422826619477180434858148938235662092482058999079105450136181685141895955574548671667320167741641072330259009

for i in range(0,1000):
    # 返回一个元组,m[1] 的值表示开方结果是否为整数
    m = gmpy2.iroot(c+i*n,3)
    if(m[1]==1):
        print(m[0])

得到答案为:

2239776471831658234108454124349621200139611967

3.其他参考教程链接

总结反思

  • 密码学挺有意思的,上面古典密码的解密全都可以试试用python实现

以上是关于crypto实验报告的主要内容,如果未能解决你的问题,请参考以下文章

Airflow 中文文档:保护连接

实验第二节——生成必要的身份证书文件

NodeJS Crypto RS-SHA256 和 JWT 承载

20175209 实验二《Java面向对象程序设计》实验报告

2018-2019-2 20175308实验二《面向对象程序设计》实验报告

编译原理 实验一 java语言实现对C语言词法分析