(文章目录)
前言
幂数加密是一种基于离散对数问题和群论理论的非对称加密算法。它使用一个生成元为质数p的循环群G来进行加密和解密。通常情况下,该算法的安全性建立在离散对数难题上,即找到群G中的一个元素g的k次方等于给定的元素h,其中k为未知数。该算法与RSA加密算法相比,具有更高的效率和安全性。
幂数加密算法的基本步骤如下:
-
选择两个大质数p和q,计算它们的乘积n=p*q。
-
计算欧拉函数φ(n) = (p-1) * (q-1)。
-
选择一个大于1小于φ(n)的整数e,使得e与φ(n)互质。
-
计算e关于φ(n)的模反元素d,即满足d*e mod φ(n) = 1的d。
-
将(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