암호화 2

[python] RSA (Rivest, Shamir and Adleman) 알고리즘

RSA 암호 알고리즘은 대표적인 공개키 알고리즘 중 하나로 소인수 분해의 어려움을 이용한 방식을 사용하고 있다. 사용자는 각각 공개키와 개인키를 갖고 있다 메시지를 보낼때는 송신자가 수신자의 공개키로 암호화 한 후 전송하면 수신자는 수신자의 개인키로 복호화한다. 1. 먼저 2개의 소수(p, q)를 선택합니다. 2. n 을 구합니다 n = p * q 3. φ(n)을 구합니다 φ(n) = (p-1)(q-1) 4. 1 < e < φ(n) 을 만족하는 φ(n)과 서로소인 자연수 e를 구합니다 5. e mod φ(n) = 1 을 만족하는 d를 구합니다 여기서 공개키는 (n, e) 쌍이 되고, 개인키는 d 가 됩니다. # RSA 암호화 프로그램 def encipher(p, n, pk): c = '' i = 0 wh..

algorithm 2020.11.06

[python] 카이사르 암호화(Caesar cipher) 알고리즘

카이사르 암호화란 고대 로마의 카이사르가 사용했다고 알려졌다. 평문에 있는 문자가 알파벳의 N번째 문자라면, 이것을 N+K 번째 문자로 교체하는 원리 예를 들어 K = 1 이라고 한다면, A -> B 가 되고, B -> C가 되는 원리 예를들어 'APPLE BANANA' 라는 문장이 있고 k = 1 이라면 암호문은 'BQQMFACBOBOB' 가 될 것이다. * 여기 암호문에서의 A는 빈칸을 의미한다. 이유는 A~Z 중 A앞에 공백부터 시작한다고 생각하면 쉽다. (빈칸) A B C ... X Y Z def encipher(p, k): c = '' for i in range(len(p)): a = ord(p[i]) if a == 32: a = 64 t = a + k if t > 90: t -= 27 if t..

algorithm 2020.11.04