From 87ad9f71c945dedcc756e177d011efe4096542e4 Mon Sep 17 00:00:00 2001 From: MegaAbsol Date: Mon, 13 Mar 2017 20:19:36 -0400 Subject: [PATCH] Update encrypt.py --- paillier-service/encrypt.py | 72 ++++++++++++++++++++++++++++--------- 1 file changed, 55 insertions(+), 17 deletions(-) diff --git a/paillier-service/encrypt.py b/paillier-service/encrypt.py index 81c2a9d..4342abd 100644 --- a/paillier-service/encrypt.py +++ b/paillier-service/encrypt.py @@ -1,17 +1,55 @@ -#easyctf{3ncrypt_m3!} -p = 8144194198641127053467521063088973929365485175581336279930490759203400725623086153929294542350943040473375790841894343662879542882143670576484983482676929 -q = 9349990237178389195581522619084514015305492951423232071317276234453300521753669715890246992825146527366147991960266180184131002960074501683578205688324193 -n = p*q -l = (p-1)*(q-1) -g = n+1 -mu = 50461441817124067084598541006218828107720370909059246792962232658242869571003990015294541684702084151173329882441771747115542549562899610400402036968340066285127945127930744036805832623326255171902722383305695091973581469008587730106329093915495096858331002656658189454919392650001488548518482449865519307486 -m = int(raw_input('Enter a message to encrypt: ')) -r = int(raw_input('Enter r (int): ')) -if m > 100000000000000000 or m < 0: - print('Bad m. We only take m from 0 to 100000000000000000.') - exit() -if r > 100000000000000000 or r < 0: - print('Bad r. We only take r from 0 to 100000000000000000.') - exit() -c = (pow(g,m,n**2)*pow(r,n,n**2))%(n**2) -print 'c: '+str(c) +#/usr/bin/env python + +import SocketServer,threading,os,time +import signal + + +PORT = 8570 + +class incoming(SocketServer.BaseRequestHandler): + def handle(self): + atfork() + req = self.request + + def recvline(): + buf = "" + while not buf.endswith("\n"): + buf += req.recv(1) + return buf + signal.alarm(120) + + try: + p = 8144194198641127053467521063088973929365485175581336279930490759203400725623086153929294542350943040473375790841894343662879542882143670576484983482676929 + q = 9349990237178389195581522619084514015305492951423232071317276234453300521753669715890246992825146527366147991960266180184131002960074501683578205688324193 + n = p*q + l = (p-1)*(q-1) + g = n+1 + mu = 50461441817124067084598541006218828107720370909059246792962232658242869571003990015294541684702084151173329882441771747115542549562899610400402036968340066285127945127930744036805832623326255171902722383305695091973581469008587730106329093915495096858331002656658189454919392650001488548518482449865519307486 + #m = int(req.recv('Enter a message to encrypt: ')) + req.sendall('Enter a message to encrypt: \n') + m = int(recvline()) + + req.sendall('Enter r (int): \n') + r = int(recvline()) + if m > 100000000000000000 or m < 0: + print('Bad m. We only take m from 0 to 100000000000000000.') + exit() + if r > 100000000000000000 or r < 0: + print('Bad r. We only take r from 0 to 100000000000000000.') + exit() + c = (pow(g,m,n**2)*pow(r,n,n**2))%(n**2) + print 'c: '+str(c) + except: + pass + + req.sendall("Bye!\n") + req.close() + +class ReusableTCPServer(SocketServer.ForkingMixIn, SocketServer.TCPServer): + pass + +SocketServer.TCPServer.allow_reuse_address = True +server = ReusableTCPServer(("0.0.0.0", PORT), incoming) + +print "Server listening on port %d" % PORT +server.serve_forever()