密码学第三周

密码学第三周

1.安装VMware

进入VMware官网,选择workstation pro

下载VMware Workstation 17 Pro

打开下载好的.exe文件,安装

选择安装位置

开始安装

安装成功后,输入许可证密钥

下载安装成功。

虚拟kali系统环境

进入官网下载kali

利用VMware虚拟环境

选择kail下载所在地址

命名虚拟机,选择位置

开启虚拟机,准备安装

输入用户名

设定密码

对磁盘进行分区

软件选择

安装GRUB启动引导器


安装成功

2.ctf-show rsa

baby rsa1

已知e,p,q,c

n=p*q得到n,RSA基础题型解密得解。

phi_n = (p-1)*(q-1)#最小公倍数
d = gmpy2.invert(e,phi_n)#求逆元
m = pow(c,d,n)#c^d mod n
print(libnum.n2s(int(m)))#数字转字符串

easy rsa1

已知e,n,c

利用factordb.com分解得p,q

即rsa基础题型求解

easy rsa2

观察数据,e相同,已知n1,c1,n2,c2

可得为变式题型n不互素

q=gmpy2.gcd(n1,n2)#gcd(x,y)求x,y最大公约数
p1=n1//q
phi_n=(q-1)*(p1-1)
d1=libnum.invmod(e,phi_n)#对e模phi_n取反
m=pow(c1,d1,n1)
print(libnum.n2s(int(m)).decode())#decode()字节转字符串

easy rsa3

观察数据,n相同,已知e1,c1,e2,c2

可得为变式题型共模攻击

s1,s2,s3=gmpy2.gcdext(e1,e2)#扩展欧几里得原理
m=(pow(c1,s2,n)*pow(c2,s3,n)%n)

easy rsa4

观察数据,e=3,已知n,c

可得为变式题型低加密指数攻击,k比较小

def de(c,e,n):
    k=0
    while True:
        m=c+n*k
        result,flag=gmpy2.iroot(m,e)#开方
        if True == flag:
            return result
        k+=1
m=de(c,e,n)#解密

easy rsa5

已知e,n,c

利用factordb.com分解得p,q

即rsa基础题型求解

3.凯撒密码脚本

大写字母A至Z对应的十进制ASCII编码为65至90,小写字母a至z对应的十进制ASCII编码为97至122
ord() :将字符转换为了对应的 ASCII 值
chr(): 将对应的值转换为字符
取模运算: 将一个数整除另一个数得到的余数,余数即模运算的值
加密脚本
大小写分别偏移

str=input("请输入明文:")
n=int(input("请输入密钥:"))#偏移量
str_encrypt=""
for letter in str:#循环,遍历字符串
    if letter==" ":
        letter_encrypt=" "#空格不变
    elif 'a' <= letter <= 'z':#小写字母
        str_encrypt += chr(ord('a') + ((ord(letter) - ord('a')) + n) % 26)#利用ASCLL码完成字母偏移
    elif 'A' <= letter <='Z':#大写字母
        str_encrypt += chr(ord('A') + ((ord(letter) - ord('A')) + n) % 26)
print("密文为:",str_encrypt)

偏移

str=input("请输入明文:")
n=int(input("请输入密钥:"))
str_encrypt=""
for letter in str:
    if letter==" ":#空格不加密
        letter_encrypt=" "
    else:
        letter_encrypt=chr((ord(letter)-ord("a") +n) %26 +ord("a"))
    str_encrypt += letter_encrypt
print("密文为:",str_encrypt)

解密

str=input("请输入密文:")
n=int(input("请输入密钥:"))#相同的密钥解密
str_decrypt=""
for word in str:
    if word==" ":
        word_decrypt=" "
    else:
        word_decrypt=chr((ord(word)-ord("A") -n) %26 +ord("A"))
    str_decrypt = str_decrypt+word_decrypt
print("明文为:",str_decrypt)

4.数论学习1

A.一些基础概念:
合数<=>素数
整除:a|b :b能被a整除,a叫做b的约数(因数)
公约数(公因数)
互质:公约数只有1的两个数
同余:给定一个正整数m,如果两个整数a和b满足a-b能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m)。对模m同余是整数的一个等价关系

B.常见符号:
mod,要与一般的%相区分
mod意为模意义下结果一定为正
%是一种运算,结果可以为负
同余符号(≡)两个整数a,b,如果a mod m = b mod m则称a,b对于模m同余,记作a ≡ b ( mod m )
求和符号 sigma(Σ )
求积符号 Π
μ 莫比乌斯函数
φ 欧拉函数:小于n的正整数中与n互质的数的数目
整除符号 x|y,表示x整除y,即x是y的因数
gcd(x,y):代表x和y的最大公约数,也可写作(x,y)
lcm(x,y):代表x和y的最小公倍数,也可写作[X,Y]

C.模运算:
基本性质:
(1)若p ∣ ( a − b ) ,则a ≡ b ( % p )
(2)( a % p ) = ( b % p ) 意味a ≡ b ( % p )
(3)对称性:a ≡ b ( % p )等价于b ≡ a ( % p )
(4)传递性:若a ≡ b ( % p ) 且b ≡ c ( % p ) ,则a ≡ c ( % p )
运算规则:
(a+b)%p=(a%p+b%p)%p
( a − b ) % p = ( a % p − b % p ) % p
( a ∗ b ) % p = ( a % p ∗ b % p ) % p
(a^b )%p=((a%p) ^b )%p
结合律
交换律
分配率
定理:
若a ≡ b ( % p ) ,则对于任意的c,都有( a + c ) ≡ ( b + c ) ( % p ) ;
若a ≡ b ( % p ) ,则对于任意的c,都有( a ∗ c ) ≡ ( b ∗ c ) ( % p ) ;
若a ≡ b ( % p ),c ≡ d ( % p ) ,则 ( a + c ) ≡ ( b + d ) ( % p ) ,( a − c ) ≡ ( b − d ) (%p)
( a ∗ c ) ≡ ( b ∗ d ) ( % p ) ,( a / c ) ≡ ( b / d ) ( % p );
若a ≡ b ( % p ),则对于任意的c,都有ac ≡ bc ( % p );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值