목록크립토 (2)
안 쓰던 블로그

AES 암호화 1. 라운드키와 xor한다. (AddRoundKey) 2. 바이트를 치환한다. (SubBytes) 치환표 SBox를 이용한다 3. 행별로 바이트를 옮긴다. (ShiftRows) 첫 행은 움직이지 않고 둘째행은 왼쪽으로 1번, 셋째행은 왼쪽으로 2번, 넷째행은 3번 바이트 단위로 이동하는 왼쪽 순환 쉬프트 과정을 거친다 4. 열 별로 바이트를 섞는다. (4) 이전 라운드에서 나온 값의 각 열에 대해 임의의 행렬과 연산한다 5. 라운키와 xor한다. (AddRoundKey) 암호문과 평문을 XOR한다 6. (라운드 수 - 1) 만큼 2~5를 반복한다. 7. 마지막 라운드는 MixColumns를 제외하고 수행한다. 키 확장 1. 키를 4바이트씩 나누어 4개의 워드로 만든다. 2. 이전 번의 워드..

from Crypto.Util.number import * import gmpy2 p = getPrime(1024) q = gmpy2.next_prime(p) e = 65537 N = p * q phi = (p - 1) * (q - 1) d = gmpy2.powmod(e, -1, phi) flag = open("flag").read() msg = ["Hello Happy RSA!", "Life like Pwn", flag] def enc(m): tmp = bytes_to_long(m) ct = gmpy2.powmod(tmp, e, N) ct = long_to_bytes(ct) return ct.encode("hex") print(enc(msg[0])) print(enc(msg[1])) print(enc(..