【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-云影

举报
剑豪 发表于 2023/06/24 15:26:28 2023/06/24
【摘要】 幂数加密是一种基于离散对数问题和群论理论的非对称加密算法。它使用一个生成元为质数p的循环群G来进行加密和解密。通常情况下,该算法的安全性建立在离散对数难题上,即找到群G中的一个元素g的k次方等于给定的元素h,其中k为未知数。该算法与RSA加密算法相比,具有更高的效率和安全性。

前言

幂数加密是一种基于离散对数问题和群论理论的非对称加密算法。它使用一个生成元为质数p的循环群G来进行加密和解密。通常情况下,该算法的安全性建立在离散对数难题上,即找到群G中的一个元素g的k次方等于给定的元素h,其中k为未知数。该算法与RSA加密算法相比,具有更高的效率和安全性。

幂数加密算法的基本步骤如下:

  1. 选择两个大质数p和q,计算它们的乘积n=p*q。

  2. 计算欧拉函数φ(n) = (p-1) * (q-1)。

  3. 选择一个大于1小于φ(n)的整数e,使得e与φ(n)互质。

  4. 计算e关于φ(n)的模反元素d,即满足d*e mod φ(n) = 1的d。

  5. 将(e, n)作为公钥,(d, n)作为私钥。

加密时,将消息m转换成一个整数M,然后计算C = M^e mod n,C即为密文。解密时,将密文C用私钥中的指数d进行解密,即计算M = C^d mod n,M即为明文。

该算法的安全性建立在离散对数问题上。由于在离散对数问题上的难解性,使得从密文中无法直接推出明文,从而保证了数据的安全性。

解析幂数加密算法的复杂度与RSA算法相当,都要依赖于大质数的因子分解问题。因为质数因子分解是一种NP问题,目前没有有效的解决方案,因此幂数加密算法也被认为是一种安全可靠的加密算法。

一、云影

1.打开题目

在这里插入图片描述

2.解题

在这里插入图片描述 下载附件发现字符串:8842101220480224404014224202480122

二进制幂数加密法就是应用这个原理,由于英文字母只有26个字母,由公式可知,只要2的0、1、2、3、4、5次幂就可以表示31个单元。通过用二进制幂数表示字母序号数来加密。例如

明文: d o n o t p u l l a l l y o u r e g g s i n o n e b a s k e t

字母序号:4 15 14 15 20 16 21 12 12 1 12 12 25 15 21 18 5 7 7 19 9 14 15 14 5 2 1 19 11 5 20

由于4=2^2 所以D加密过之后是2;15=20+21+22+23所以O加密后是0123。同理得到上述明文的加密后的密文

密文:2 0123/123 0123 24/4 024 23 23/0 23 23/034 0123 024 14/02 012 012 014/03 123 /0123 123 02/1 0 014 013 02 24

其中空格表示字母的间隔,/表示单词的间隔。

python脚本解密

a="8842101220480224404014224202480122"
a=a.split("0")
flag=''
for i in range(0,len(a)):
     str = a[i]
     list=[]
     sum=0
     for j in str:
        list.append(j)
        length = len(list)
     for k in range(0,length):
        sum+=int(list[k])
     flag+=chr(sum+64)
print(flag)
​

flag为:WELLDONE

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。