Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

데블스캠프2011/다섯째날/Cryptography

From ZeroWiki
Revision as of 11:15, 1 July 2011 by imported>undinekr

Python Client

import socket
addr = ('255.255.255.255', 3333)

UDPSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Create socket
UDPSock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
print ('Enter your message:')
print ('- Empty message to stop this client.')

while True:
    data = raw_input('>> ')
    if len(data) == 0:
        break
    else:
        if UDPSock.sendto(data, addr):
            print ("Sending message '%s'..." % data)

UDPSock.close()
print ('Client stopped.')


import socket

rcv_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
    rcv_sock.bind(("", 3333))
except:
    print "Error at Binding"

while True:
    print "Listening..."
    data, addr = rcv_sock.recvfrom(3333)
    print "Got %s" % data

키 생성

두 개의 p != q인 큰 소수 p와 q를 선택한다. n <- p*q φ(n) <- (p-1)*(q-1) 1 < e < φ(n)이면서 φ(n)과 서로소인 e를 선택한다. d <- e^^–1^^ mod φ(n)

(e, n) 은 공개키, d는 개인키

암호화

C : 암호문, P : 평문 C = P^^e^^ mod n

복호화

C : 암호문, P : 평문 P = C^^d^^ mod n


데블스캠프2011