Quadratic Residues - 제곱 잉여

2023. 2. 7. 18:09·Tips & theory
728x90
반응형

서론

과연 크립토의 수학은 어디까지 가는가... ㅋㅋㅋ

 

이론

요약하자면

x^2 ≡ a mod n

을 만족하는 정수 x가 있으면 a는 n의 제곱 잉여, 없으면 제곱 비잉여 라고 한다.

 

예를 들어 n =7 이라고 가정하면

1^2 ≡ 1 ≡ 1 mod 7

2^2 ≡ 4 ≡ 4 mod 7

3^2 ≡ 9 ≡ 2 mod 7

4^2 ≡ 16 ≡ 2 mod 7

5^2 ≡ 25 ≡ 4 mod 7

6^2 ≡ 36 ≡ 1 mod 7

... (이후에는 반복됨)

이기 때문에 1,2,4가 7의 제곱 잉여가 된다.

한편, 3,5,6은 비 제곱 잉여가 된다.

 

한번 더 해보자.

만일 n이 13이라면

1^2 ≡ 1 ≡ 1 mod 13

2^2 ≡ 4 ≡ 4 mod 13

3^2 ≡ 9 ≡ 9 mod 13

4^2 ≡ 16 ≡ 3 mod 13

5^2 ≡ 25 ≡ 12 mod 13

6^2 ≡ 36 ≡ 10 mod 13

7^2 ≡ 49 ≡ 10 mod 13

8^2 ≡ 64 ≡ 12 mod 13

9^2 ≡ 82 ≡ 3 mod 13

10^2 ≡ 100 ≡ 9 mod 13

11^2 ≡ 121 ≡ 4 mod 13

12^2 ≡ 144 ≡ 1 mod 13

...(이후에는 반복됨)

이기 때문에 제곱 잉여는 1,3,4,9,10,13이 된다.

 

여기서 a^2 은 (-a)^2 과 같은 값을 가지기에 항상 두개의 a를 가진다.

 

Code

이를 코딩해보자.

더 쉬운 방법이 있을지 모르겠지만... 그냥 1부터 n/2 까지 계산했으며, 홀수 case를 고려해 한번 더 실행해줬다.

n = int(input())
a = []

for i in range(1,1+n//2,1):
    a.append((i**2)%n)

print(a)

 

┌──(kali㉿kali)-[~/Downloads]
└─$ python solve.py
7
[1, 4, 2]
                                                                                                                   
┌──(kali㉿kali)-[~/Downloads]
└─$ python solve.py
11
[1, 4, 9, 5, 3]
                                                                                                                   
┌──(kali㉿kali)-[~/Downloads]
└─$ python solve.py
15
[1, 4, 9, 1, 10, 6, 4]

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Tips & theory' 카테고리의 다른 글

vscode 탐색기에서 불필요한 파일 숨기기  (0) 2023.02.12
Legendre Symbol - 르장드르 기호  (0) 2023.02.09
PWN wargame 모음 (및 느낀점)  (0) 2023.02.04
항등원과 역원, 그리고 합동식  (0) 2023.02.03
Expanded Euclid's Algorithm - 확장된 유클리드 호제법  (0) 2023.02.02
'Tips & theory' 카테고리의 다른 글
  • vscode 탐색기에서 불필요한 파일 숨기기
  • Legendre Symbol - 르장드르 기호
  • PWN wargame 모음 (및 느낀점)
  • 항등원과 역원, 그리고 합동식
wyv3rn
wyv3rn
아저씨의 흔한 취미. wyv3rn#1249
  • wyv3rn
    think storage
    wyv3rn
  • 전체
    오늘
    어제
    • 분류 전체보기 (505) N
      • To do list (7)
        • Doing (1)
        • Complete (6)
      • Diary (35)
      • Tips & theory (73)
      • Kernel Exploit (27)
        • Theory (15)
        • Exercise (5)
      • File Structure (6)
      • Wargame (313)
        • pwn.college (34)
        • Dreamhack (148)
        • pwnable.kr (15)
        • Lord of Sqlinjection (3)
        • Cryptohack (20)
        • Root me (27)
        • CodeEngn (4)
        • Exploit Education (22)
        • ROP Emporium (8)
        • H4C (10)
        • Hackerchool (22)
      • CTF (44) N
        • Solved (42) N
        • Unsolved (2)
      • Script (0)
      • RubiyaLap (0)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

    • PWN wargame 모음 (및 느낀점)
    • 비공개 글들에 대해.
    • 뭐라도 하나 얻어가시길...
  • 인기 글

  • 태그

    root
    Me
    32bit
    pwntools
    dreamhack
    la ctf
    rop
    phoenix
    CANARY
    exploit education
    RTL
    Buffer Overflow
    cryptohack
    libc
    docker
    FSB
    pwnable.kr
    64bit
    x64
    tcache
    root-me
    lob
    x86
    hackerschool
    heap
    ROOT ME
    BOF
    Format String Bug
    vtable
    _IO_FILE
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
wyv3rn
Quadratic Residues - 제곱 잉여
상단으로

티스토리툴바