CRYPTOHACK学习1

MODULAR ARITHMETIC 模算术

最大公约数

两个整数的最大公约数等于其中较小的数和两数相除的余数的最大公约数

def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

扩展欧几里得算法 Extended GCD

扩展欧几里得算法是查找整数的有效方法,使得a b u v

a * u + b * v = gcd(a,b)
def ext_gcd(a, b): #扩展欧几里得算法
    if b == 0:
        return 1, 0, a
    else:
        x, y, gcd = ext_gcd(b, a % b) #递归直至余数等于0(需多递归一层用来判断)
        x, y = y, (x - (a // b) * y) #辗转相除法反向推导每层a、b的因子使得gcd(a,b)=ax+by成立
        return x, y, gcd
num1=
num2=
tt=ext_gcd(num1,num2)
print(tt)

m | a ->a ≡ 0 mod m

费马小定理

如果p是一个质数,而整数a不是p的倍数,则有
a ( p − 1 ) ≡ 1 ( m o d p ) a p ≡ p ( m o d p ) a^{(p-1)}≡1\pmod p\\ a^{p}≡p\pmod p ap11(modp)app(modp)

乘法逆元

方法一:

费马小定理

image-20230821123917726

拓展欧几里得算法

image-20230821123947066

二次剩余

p = 1 mod 4

p = 3 mod 4

rabin

Legendre Symbol

勒让德符

sage:

 kronecker

image-20230821171104867

image-20230821171542063

image-20230821171551211

image-20230821182525403

Tonelli-Shanks算法

Tonelli-Shanks算法_python_M3ng@L的博客-CSDN博客

中国剩余定理

image-20230821211947747

在密码学中,我们通常使用中国余数定理来帮助我们将非常大的整数问题简化为一组几个更容易的问题。

x ≡ a mod N
N = n1 * n2 * ... * nn
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值