209 字
1 分鐘
一些 CTF 密碼學會用到的東西
2025-06-04

常用到的密碼學工具#

  • yafu
  • factordb
  • sagemath
  • CoCalc
  • CyberChef

常用到的 Python 函式庫#

  • gmpy2
  • libnum
  • sympy
  • pycryptodome
  • owiener

正確安裝 Crypto#

pip uninstall crypto pycryptodome
pip install pycryptodome

crypto.bytes_to_long 原理#

def bytes_to_long(byte):
result = 0
for b in byte:
result = result * 256 + int(b)
return result

crypto.bytes_to_long 原理#

def long_to_bytes(long):
result = ""
for i in range(len(str(long))):
result += (chr(long >> (i * 8) & 0xff))
return result[::-1]

RSA 原理#

  1. 隨意選擇兩個大的質數 ppqqpp 不等於 qq ,計算 N=pqN=p*q
  2. 根據歐拉函數獲取 ϕ=(p1)(q1)\phi=(p-1)*(q-1)
  3. 選擇一個小於 ϕ\phi 並與 ϕ\phi 互質的整數 ee (public key) 我們通常取 65537。
  4. 求得 ee 關於 ϕ\phi 的模反元素 dd (private key)
  5. p,qp,q 丟棄
    • 加密: Me=C(modN)M ^ e = C(\mod N)
    • 解密: Cd=M(modN)C ^ d = M(\mod N)
    • 公鑰: (N,e)(N , e)
    • 私鑰: (N,d)(N , d)

RSA 攻擊#

N#

  • p, q 質數太小
  • 共用 N
  • p, q 太接近

e#

  • 太小 -> 沒加密到
  • 太大 -> 導致 d 太小
  • Wiener attack
    1. q<p<2qq < p < 2q
    2. d<13N14d < \dfrac{1}{3} N^{\dfrac{1}{4}}
一些 CTF 密碼學會用到的東西
https://guan4tou2.github.io/posts/some-ctf-crypto/
作者
罐頭
發佈於
2025-06-04
許可協議
CC BY-NC-SA 4.0