ECC
ECC
椭圆曲线是什么
满足 Weierstrass 方程的点集,形如: Y2 = X3 + AX + B
这样的等式称为椭圆曲线(elliptic curve)
当这个方程表示的曲线是一条连续的曲线时,需要满足条件 4A3 + 27B2 ≠ 0
这时称为非奇异椭圆曲线,反之称为奇异椭圆曲线
奇异椭圆曲线都是形状有点尖或者有交叉
这些情况下的点加法会出现问题
下面来介绍一下点加法
我们在椭圆曲线上定义加的运算,我在曲线上找到两点P,Q,现在想要计算出P ⊕ Q
首先我们连接P,Q两点,与椭圆曲线E相交于一点
相交的点关x的对称的点就是P ⊕ Q的点R
这里我考虑一个情况如果当P=Q的时候也就是P ⊕ P,该如何运算呢
其实还是一样的,只不过这次我们取过椭圆曲线E上的点P的切线,再与曲线相交后做关于x轴的对称点即可
现在还有种情况就是如果是无穷远点呢,也就是当P,Q关于x轴对称
也就是P ⊕ P′ = 𝒪
这时候会发现 P ⊕ 𝒪 = P...
格密码
格密码
作为后量子密码,可以用来抵抗量子攻击
向量
带有方向的线段
u⃗ = (1, 2)
向量的运算
向量的运算满足平行四边形法则
u⃗ + v⃗ = w⃗
ku⃗ = (k, 2k),也就是将长度扩大k倍(k ∈ ℤ)
向量空间
向量的集合,运算的空间 $\text { 1. } a \in
V, b \in V \text {, 则 } a+b \in V \\$
2. a ∈ V, k ∈ ℝ, 则
ka ∈ V 。
也就是满足封闭性
向量正交与施密特(Schmidt)正交化
当 $ a , b $ 时,当 ((a, b) = 0),即 ( a^T b = 0 ) 时,称向量 ( a, b
) 正交。
由两两正交的非零向量组成的向量组称为正交向量组,由单位向量组成的正交向量组称为标准正交向量组。
( n ) 维欧氏空间求解正交基,一组基底为 (α1, α2, ⋯, αn)
Step 1: 令 β1 = α1
Step 2: 计算 α2 在 β1
方向上的投影,并做差得到 $$
\beta_2 =...
Gröbner基学习
Gröbner基学习
我是跟着这篇博客学习的
把Gröbner基当作一个求解同余方程组的工具
一般可以用 Ideal.groebner_basis() 来解方程组
先来看具体的实例
12345678910111213from Crypto.Util.number import *p, q = getPrime(256), getPrime(256)N = p * qm1 = bytes_to_long(b"flag{12345678901234567890")m2 = bytes_to_long(b"1234567890123456789012345")m3 = bytes_to_long(b"6789012345678901234567890}")e = 17c1 = pow(m1, e, N)c2 = pow(m2, e, N)c3 = pow(m3, e, N)s = m1 + m2 + m3print(c1, c2, c3,...
Shamir's secret sharing
Shamir’s secret sharing算法
该算法由于Shamir提出,也就是RSA中的这S
算法概述:
秘密s被分成n份毫无相关的部分信息,每一部分信息称为一个子密钥,由一个参与者持有,只有至少拥有k份子密钥时才能恢复出秘密s,这种方案为(k, n)-秘密分割门限方案,k称为方案的门限值
一个秘密S要由n个人来保管
将s分为n个值→{s1, s2, s3,…,sn}
保证从中任取k个值,可以还原出s,{s1, s2, s3,…,sn}→s
保证从中任取k-1个值不能还原出s,{s1, s2, s3,…,sn}↛s
算法实现:
这是如何实现的呢
我们可以先回顾下多项式的性质
两个点可以确定唯一的一条直线也就是一次多项式
但是确不能确定唯一的二次多项式
但是三个点就可以确定唯一的二次多项式
对结论推广,我们可以知道k-1次的多项式可以由k个点来唯一确定
回到算法中,我们将秘密看成是k-1次多项式我们可以得到...
h4ck0n CTF 2025
Easy Inverse
1234567891011121314151617from Crypto.Util.number import * p = getPrime(1024)bits = 100from secret import flagm = bytes_to_long(flag)hints = [pow(m , -1 , p) , pow(m+1 , -2 , p)]hints_leak = [(i>>bits)<<bits for i in hints]print(f"hints_leak = {hints_leak}")print(f"p = {p}")
12hints_leak =...
Full Weak Engineer CTF 2025
Full Weak Engineer CTF 2025
baby-crypto
1sjrpgs{ebg13rq_zrffntr!}
直接凯撒解密即可
1fwectf{rot13ed_message!}
base🚀
1234567891011121314151617181920212223242526272829303132333435\#!/usr/bin/env python🚀with open('emoji.txt', 'r', encoding='utf-8') as f: emoji = list(f.read().strip())table = {i: ch for i, ch in enumerate(emoji)}def encode(data): bits = ''.join(f'{b:08b}' for b in data) pad = (-len(bits))...
