From 9f4a34543ba1d7157ecabb96e06cd3b78a0db8d0 Mon Sep 17 00:00:00 2001 From: Dominik Jagosz Date: Tue, 18 Jun 2024 22:37:32 +0200 Subject: [PATCH] dziala --- .idea/vcs.xml | 6 ++ __pycache__/dsa.cpython-310.pyc | Bin 0 -> 4211 bytes dsa.py | 24 +++--- klient.py | 61 ++++++++++--- main.py | 148 ++++++++++++++++---------------- rsa.py | 28 +++--- serwer.py | 33 +++++-- 7 files changed, 183 insertions(+), 117 deletions(-) create mode 100644 .idea/vcs.xml create mode 100644 __pycache__/dsa.cpython-310.pyc diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..9661ac7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/__pycache__/dsa.cpython-310.pyc b/__pycache__/dsa.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fa97cc3f8e75d1935f9b835468cff2fa04817a75 GIT binary patch literal 4211 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 1 - tc = tc >> 1 - #print(bit) - #print(wyn) - #print(bin(rc)) - #print(bin(tc)) - #print("xor", bin(wyn)) - wywalane_z_r = r & 1 - #print("r", bin(r)) - r = r >> 1 - #print("podzielone", bin(r)) - r = r - (1 << N - 1) - r = r + (wyn << N - 1) - r = r + (1 << N) - #print("r dodane", bin(r)) - return r, wywalane_z_r - - -#r1, b = nastepny_bit(r1, t1) -#print(bin(r1)) -#print(b) - - -def shrinking_generator(r1, r2, t1, t2,rundy=10000): - wyn = [] - for i in range(rundy): - r1, l1 = nastepny_bit(r1, t1) - r2, l2 = nastepny_bit(r2, t2) - if l1 == 1: - wyn.append(l2) - print(l2, end="") - if i>0 and i%500==0: - print() - print() - return wyn - -wyn = shrinking_generator(r1,r2,t1,t2) -print(len(wyn)) - -wyn = shrinking_generator(pdpkt_a,pdkpt_b,pdpkt_a,pdkpt_b) -print(len(wyn)) -print(wyn) \ No newline at end of file +# N = 8 +# # r od n +# r1 = b"11111111" +# r2 = b"11111111" +# r1 = (int(r1, 2)) + (1 << N) +# r2 = (int(r2, 2)) + (1 << N) +# # t od 1 +# t1 = b"10001110" +# t2 = b"10010101" +# t1 = (int(t1, 2)) + (1 << N) +# t2 = (int(t2, 2)) + (1 << N) +# # +# pdpkt_a = b"000011" +# pdkpt_b = b"101001" +# pdpkt_a = (int(pdpkt_a, 2)) + (1 << N) +# pdkpt_b = (int(pdkpt_b, 2)) + (1 << N) +# +# def nastepny_bit(r, t): +# rc = r +# tc = t +# wyn = None +# #print(bin(rc)) +# #print(bin(tc)) +# for i in range(N): +# bit = rc & 1 +# bit_z_t = tc & 1 +# if bit_z_t == 1: +# if wyn == None: +# wyn = bit +# else: +# wyn = wyn ^ bit +# rc = rc >> 1 +# tc = tc >> 1 +# #print(bit) +# #print(wyn) +# #print(bin(rc)) +# #print(bin(tc)) +# #print("xor", bin(wyn)) +# wywalane_z_r = r & 1 +# #print("r", bin(r)) +# r = r >> 1 +# #print("podzielone", bin(r)) +# r = r - (1 << N - 1) +# r = r + (wyn << N - 1) +# r = r + (1 << N) +# #print("r dodane", bin(r)) +# return r, wywalane_z_r +# +# +# #r1, b = nastepny_bit(r1, t1) +# #print(bin(r1)) +# #print(b) +# +# +# def shrinking_generator(r1, r2, t1, t2,rundy=10000): +# wyn = [] +# for i in range(rundy): +# r1, l1 = nastepny_bit(r1, t1) +# r2, l2 = nastepny_bit(r2, t2) +# if l1 == 1: +# wyn.append(l2) +# print(l2, end="") +# if i>0 and i%500==0: +# print() +# print() +# return wyn +# +# wyn = shrinking_generator(r1,r2,t1,t2) +# print(len(wyn)) +# +# wyn = shrinking_generator(pdpkt_a,pdkpt_b,pdpkt_a,pdkpt_b) +# print(len(wyn)) +# print(wyn) \ No newline at end of file diff --git a/rsa.py b/rsa.py index 22cca90..92abb4f 100644 --- a/rsa.py +++ b/rsa.py @@ -265,18 +265,18 @@ def deszyfrowanie_RSA_OAEP_efektywne(N, d, c, p, q): return m -klucz_publiczny_RSA, klucz_prywatny_RSA, p, q = ( - 519761468615543605427347715703470532429938244355530617462517836775139947735532430649086044712389065327373881495341570956912263636228899450218205333731994709572385570226639327413165593530360209805759468603639857045256463923468775944877723831073218948735316969800684547536389344549931456857234306842372788643144370170015431494005792115059852604376019742040737720145831855341361995847454762357088678899180062704532000519408988445258760142165454104557986566507437171014234130588907895586535673103026294670410052684946543540355295153040713047596704353948168657913426604838668582082688505569615845354438639297748571125719945947883870935481915168118357450909437162890949276124288629273158626408730136153353280259385734094248099908877393332627830019602495378740189414275791739220123642063963148205857703085745460786497856110396863143452962185817050131451659771071779171468538379804253272573761890205034195675788656368202533040838395434243520115268109258521563259069746861504072033382067677548531381312853098367831348608517017347561078932501869038526817662345324458956129880592307734774686126383765519554521082281355928596367373896420049772278195723106268205519834478036673827492711851824231074849054234160240213942064673753130040021561496201, - 477381706395942701152074095578632486629565400458439476605265085853794121036702612260159616584121387309492215289565364823820329641787576027356541944084504070937525199582998228494161581256587963350479182569767709073476305942938578516914185238354982945951325610464183760057011556336116027667431478443971789852497566022190931964624926914512000465438808202901732238917670859079331357158287446481486109341772535642821404724625886765680916122532309926171425411343129633761470730490722435328973775404176016783739955436887938755254368532747248553601029668098763389748002919821495769996090735951060509426001668094204167013619340151559257016228800996225376949328480285921295583758343588892868414107256524587102802726669931221977934082695445776450539968355018778177567062955955188598370628274906129902341525667948146220455560650547385726862123568732001996709039776914328180353694837345124024464856436018138531057521237527151154874694659679915931307604482959674167927057989516514567590062270287113788435548631219164690228588947375243868674913030414096170014455884449983476702938473784682164922729359739421419438500787506002570332539986745630166359816334300274692876831789517660550946290972807224515579551609831535687760126827024718122063108706599), 351666562595755180375395684706241055066156015118305238714672681051882280187504041643434000791814441548607213636968471872699749514579264747751265631272256072725451071040601318567317130676266378472799425651993837557182657388293299120738132040687844779805705782033358582690112156036725659897429182523487027733035393136127607866012534194708593248355973043622949956480835065663676049584885243751590721741501965828757835520710448143589654198570646114663285241248290713467857410885600973553990582698560020712556891679552160547216847450959753723375562391525266281121596206287835239825464988412752920851291059488855778730214384761750487421888963628985845627716345194071713463878260961723623247223927256636464995367615914339908375807571549256908577125462826282135037163236879694999772105827399413764752262353954388137128091790174996148478228118409615917295349567618090677194660136786354642358341440475271809799562062575133857219513963659279640385931136925337147793582596685284559585465388622433797482322409875254412068070757284707921223037714540415540426945620781055610759002438036137835981012468827444588505213686787128969359012972104378460526475214473144375243797989638951510244270960646393807997876101642432170306423462852210882508497178399, 25135373776665590901202336545666836840803391456241601649197796217462555674052551470602221560430959564950903058760936416369952872220340695429584839910539112417172641186658957618681049568598438406515601629945861509808185343104246257658988353826830801833070838727357392230011787930325906736489581750024881433299826206439672753310114100220662748513681137812457302883579006216830084552049499018274245345348857361546260882853255668574117727827869922237413735566854945952091470823515266658679062817428979342500513620275531312300114575338687577827028450767856524439798014817991240510086446185465180093752648368250982692996851, 20678485756120477969749679171411892295363660397911095536909078058504743163718110463975943096121495385121226766215138672406087647843042984392942673880078680348165649479590165596137059916732118274875699928110613763860604584697412776630385407698849636163585027765534352995283408392656841447656433417025991247442767235071030016493820494123404672276837056547392384047230316759182798179296559194938230590081605300708541927122089496849298160531622588496007433560523950635471318918140715059942293286734964890852647775755004955456829006947025556582805868127595216838587483482482814544235364358121943295803510671636196385576851 -klucz_publiczny_RSA,klucz_prywatny_RSA, p, q = genRSA() -print(klucz_publiczny_RSA, klucz_prywatny_RSA, p, q) -N, e = klucz_publiczny_RSA -d = klucz_prywatny_RSA -m = "Thats my Kung Fu".encode("ASCII") -c = szyfrowanie_RSA_OAEP(N, e, m) -print("szyfrgr", c) -m = deszyfrowanie_RSA_OAEP(N, d, c) -print(m) -m = deszyfrowanie_RSA_OAEP_efektywne(N, d, c, p, q) -print(m) +# klucz_publiczny_RSA, klucz_prywatny_RSA, p, q = ( +# 519761468615543605427347715703470532429938244355530617462517836775139947735532430649086044712389065327373881495341570956912263636228899450218205333731994709572385570226639327413165593530360209805759468603639857045256463923468775944877723831073218948735316969800684547536389344549931456857234306842372788643144370170015431494005792115059852604376019742040737720145831855341361995847454762357088678899180062704532000519408988445258760142165454104557986566507437171014234130588907895586535673103026294670410052684946543540355295153040713047596704353948168657913426604838668582082688505569615845354438639297748571125719945947883870935481915168118357450909437162890949276124288629273158626408730136153353280259385734094248099908877393332627830019602495378740189414275791739220123642063963148205857703085745460786497856110396863143452962185817050131451659771071779171468538379804253272573761890205034195675788656368202533040838395434243520115268109258521563259069746861504072033382067677548531381312853098367831348608517017347561078932501869038526817662345324458956129880592307734774686126383765519554521082281355928596367373896420049772278195723106268205519834478036673827492711851824231074849054234160240213942064673753130040021561496201, +# 477381706395942701152074095578632486629565400458439476605265085853794121036702612260159616584121387309492215289565364823820329641787576027356541944084504070937525199582998228494161581256587963350479182569767709073476305942938578516914185238354982945951325610464183760057011556336116027667431478443971789852497566022190931964624926914512000465438808202901732238917670859079331357158287446481486109341772535642821404724625886765680916122532309926171425411343129633761470730490722435328973775404176016783739955436887938755254368532747248553601029668098763389748002919821495769996090735951060509426001668094204167013619340151559257016228800996225376949328480285921295583758343588892868414107256524587102802726669931221977934082695445776450539968355018778177567062955955188598370628274906129902341525667948146220455560650547385726862123568732001996709039776914328180353694837345124024464856436018138531057521237527151154874694659679915931307604482959674167927057989516514567590062270287113788435548631219164690228588947375243868674913030414096170014455884449983476702938473784682164922729359739421419438500787506002570332539986745630166359816334300274692876831789517660550946290972807224515579551609831535687760126827024718122063108706599), 351666562595755180375395684706241055066156015118305238714672681051882280187504041643434000791814441548607213636968471872699749514579264747751265631272256072725451071040601318567317130676266378472799425651993837557182657388293299120738132040687844779805705782033358582690112156036725659897429182523487027733035393136127607866012534194708593248355973043622949956480835065663676049584885243751590721741501965828757835520710448143589654198570646114663285241248290713467857410885600973553990582698560020712556891679552160547216847450959753723375562391525266281121596206287835239825464988412752920851291059488855778730214384761750487421888963628985845627716345194071713463878260961723623247223927256636464995367615914339908375807571549256908577125462826282135037163236879694999772105827399413764752262353954388137128091790174996148478228118409615917295349567618090677194660136786354642358341440475271809799562062575133857219513963659279640385931136925337147793582596685284559585465388622433797482322409875254412068070757284707921223037714540415540426945620781055610759002438036137835981012468827444588505213686787128969359012972104378460526475214473144375243797989638951510244270960646393807997876101642432170306423462852210882508497178399, 25135373776665590901202336545666836840803391456241601649197796217462555674052551470602221560430959564950903058760936416369952872220340695429584839910539112417172641186658957618681049568598438406515601629945861509808185343104246257658988353826830801833070838727357392230011787930325906736489581750024881433299826206439672753310114100220662748513681137812457302883579006216830084552049499018274245345348857361546260882853255668574117727827869922237413735566854945952091470823515266658679062817428979342500513620275531312300114575338687577827028450767856524439798014817991240510086446185465180093752648368250982692996851, 20678485756120477969749679171411892295363660397911095536909078058504743163718110463975943096121495385121226766215138672406087647843042984392942673880078680348165649479590165596137059916732118274875699928110613763860604584697412776630385407698849636163585027765534352995283408392656841447656433417025991247442767235071030016493820494123404672276837056547392384047230316759182798179296559194938230590081605300708541927122089496849298160531622588496007433560523950635471318918140715059942293286734964890852647775755004955456829006947025556582805868127595216838587483482482814544235364358121943295803510671636196385576851 +# klucz_publiczny_RSA,klucz_prywatny_RSA, p, q = genRSA() +# print(klucz_publiczny_RSA, klucz_prywatny_RSA, p, q) +# N, e = klucz_publiczny_RSA +# d = klucz_prywatny_RSA +# m = "Thats my Kung Fu".encode("ASCII") +# c = szyfrowanie_RSA_OAEP(N, e, m) +# print("szyfrgr", c) +# m = deszyfrowanie_RSA_OAEP(N, d, c) +# print(m) +# m = deszyfrowanie_RSA_OAEP_efektywne(N, d, c, p, q) +# print(m) diff --git a/serwer.py b/serwer.py index 4e32e46..bb3b491 100644 --- a/serwer.py +++ b/serwer.py @@ -1,15 +1,22 @@ # https://realpython.com/python-sockets/ # echo-server.py import socket +import sys +from dsa import sig_DSA + +byteorder = "big" PORT = 65432 # Port to listen on (non-privileged ports are > 1023) ip_info = socket.getaddrinfo(socket.gethostname(), PORT) # print(ip_info) HOST = ip_info[-1][-1][0] +print() +print("-"*200) +print("tu sie zaczyna program serwer.py") print(HOST, ":", PORT) -klucz_publiczny_DSA, klucz_prywatny_DSA = (126220152782999491712146716573647923575210663342203877875997463151103734117618780085961998496900968641688295271738389523168262437046367952410100230715977561698699865420228930481833546803155826687224437601550687821059803843460614018330735329864730711512369415813709177511423225057391814747172616206699791431113, 1026153776632400528836961826077414494924816203371, 33135294496110223909298149780807071663246150710874084366253067988796622596843824622279842916377597978486097816392781318387311279773566894876369811406237208448656803682244786284714051489351162528336310611509464319257937304463246532853715133677606472539203807274116025362212599140301963520366587373345549232664, 57789326082328055343244183952945963065038001008054371988423611501774965584951836084636408462704147650194354237953178434916234787575914934345509256412623906774868805317306029570637051066904576874737549979887847806955662502738986630454336931791238784800404714101190106940899556139200869987149012959023189160975) 601201094732353224640534306619895007746271908982 +klucz_publiczny_DSA, klucz_prywatny_DSA = (126220152782999491712146716573647923575210663342203877875997463151103734117618780085961998496900968641688295271738389523168262437046367952410100230715977561698699865420228930481833546803155826687224437601550687821059803843460614018330735329864730711512369415813709177511423225057391814747172616206699791431113, 1026153776632400528836961826077414494924816203371, 33135294496110223909298149780807071663246150710874084366253067988796622596843824622279842916377597978486097816392781318387311279773566894876369811406237208448656803682244786284714051489351162528336310611509464319257937304463246532853715133677606472539203807274116025362212599140301963520366587373345549232664, 57789326082328055343244183952945963065038001008054371988423611501774965584951836084636408462704147650194354237953178434916234787575914934345509256412623906774868805317306029570637051066904576874737549979887847806955662502738986630454336931791238784800404714101190106940899556139200869987149012959023189160975), 601201094732353224640534306619895007746271908982 p, q, g, y = klucz_publiczny_DSA x = klucz_prywatny_DSA @@ -18,11 +25,27 @@ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.listen() conn, addr = s.accept() conn.send(b"klucz publiczny") - conn.sendall(klucz_publiczny_DSA) + + conn.send(p.bit_length().to_bytes(1024, byteorder)) + conn.send(q.bit_length().to_bytes(1024, byteorder)) + conn.send(g.bit_length().to_bytes(1024, byteorder)) + conn.send(y.bit_length().to_bytes(1024, byteorder)) + + conn.sendall(p.to_bytes(p.bit_length()+7//8, byteorder)) + conn.sendall(q.to_bytes(q.bit_length()+7//8, byteorder)) + conn.sendall(g.to_bytes(g.bit_length()+7//8, byteorder)) + conn.sendall(y.to_bytes(y.bit_length()+7//8, byteorder)) + with conn: print(f"Connected by {addr}") while True: - data = conn.recv(1024) - if not data: + do_podpisania = conn.recv(1024) + if not do_podpisania: break - conn.sendall(data) + m = do_podpisania + r, s = sig_DSA(p, q, g, x, m) + conn.send(r.bit_length().to_bytes(1024, byteorder)) + conn.send(s.bit_length().to_bytes(1024, byteorder)) + + conn.sendall(r.to_bytes(r.bit_length() + 7 // 8, byteorder)) + conn.sendall(s.to_bytes(s.bit_length() + 7 // 8, byteorder))