jacobi記号

SecurinetsQuals2k21 | Shilaformi

#securinetsquals2k21 import signal from secret import flag from Crypto.Random import random from Crypto.Util.number import getPrime #Odds and evens (hand game) #https://en.wikipedia.org/wiki/Odds_and_evens_(hand_game) def pad(choice, n): r…

Quadratic residuosity problem

和訳すると「平方剰余問題」? ある が与えられたときに が の平方剰余か、すなわち、なるが存在するかを判定する問題。通常 で、不明 なんか難しいらしい。(直感的には平方剰余である数とそうでない数の数に偏りがあるような気がするが、その実1 : 1) 当…

DDH仮定

ある群のを持ってきて、 はを知っていたとしてもランダムな値に見える、という仮定 ところでDDH仮定は では成り立たない。なぜなら のそれぞれに対してjacobi記号をとって積をとって、のjacobi記号と比べることで区別できる場合があるから(1/2くらいの確率…

foobarCTF 2022 | trailing bits

#foobarCTF_2022 from Crypto.Util.number import getPrime, bytes_to_long, GCD from random import randint flag = bytes_to_long(b"#REDACTED") p = getPrime(1024) q = getPrime(1024) N= p*q e = 0x10001 x = 2052550534767342463354055254165398369484…

Blum-goldwasser cryptosystem

Goldwasser-Micali cryptosystemの拡張? みたいな感じ 鍵生成 と を選ぶ(秘密鍵) (公開鍵) 暗号化 (ブロックサイズ) 平文 をサイズ のブロック に分割する をランダムに選ぶ for from to 暗号文 復号 extended euclidean algorithm で なる と を計算…

CyberSecurityRumble | PADY McPADaFACE

#!/usr/bin/env python3 from random import SystemRandom from config import p,q,e,flag print("="*50) print(open(__file__).read()) print("~"*50) random = SystemRandom() flag = int.from_bytes(flag,"big") n = p*q assert(p