From c1a86adcf532cc5519d54c7498fac634cd616319 Mon Sep 17 00:00:00 2001 From: luke <21106956+logburn@users.noreply.github.com> Date: Wed, 10 Mar 2021 13:36:30 -0500 Subject: [PATCH] asym encryption working --- ECC/encrypt.py | 16 ++++++++++++++++ ECC/genkeys.py | 18 ++++++++++++++++++ ECC/privatekey.pem | 5 +++++ ECC/publickey.pem | 4 ++++ RSA/encrypt.py | 14 ++++++++++++++ RSA/genkeys.py | 18 ++++++++++++++++++ RSA/privatekey.pem | 27 +++++++++++++++++++++++++++ RSA/publickey.pem | 9 +++++++++ prikey.pem | 27 --------------------------- privatekey.pem | 27 +++++++++++++++++++++++++++ recieve.py | 27 +++++++++++++-------------- 11 files changed, 151 insertions(+), 41 deletions(-) create mode 100644 ECC/encrypt.py create mode 100644 ECC/genkeys.py create mode 100644 ECC/privatekey.pem create mode 100644 ECC/publickey.pem create mode 100644 RSA/encrypt.py create mode 100644 RSA/genkeys.py create mode 100644 RSA/privatekey.pem create mode 100644 RSA/publickey.pem delete mode 100644 prikey.pem create mode 100644 privatekey.pem diff --git a/ECC/encrypt.py b/ECC/encrypt.py new file mode 100644 index 0000000..41a0961 --- /dev/null +++ b/ECC/encrypt.py @@ -0,0 +1,16 @@ +from Crypto.PublicKey import ECC +from Crypto.Cipher import Salsa20 as salsa + +key = ECC.import_key(open("publickey.pem", "r").read()) +cipher = salsa.new(key) + +message = "attack at dawn" +encd = cipher.encrypt(bytes(message, "utf-8")) +print(encd) + +''' +dkey = RSA.import_key(open("privatekey.pem").read()) +dcipher = pk.new(dkey) +dmessage = dcipher.decrypt(encd) +print(dmessage) +''' diff --git a/ECC/genkeys.py b/ECC/genkeys.py new file mode 100644 index 0000000..6013e32 --- /dev/null +++ b/ECC/genkeys.py @@ -0,0 +1,18 @@ +from Crypto.PublicKey import ECC + +# generate keypair +key = ECC.generate(curve='NIST P-256') + +# export private key +f = open("privatekey.pem", "wt+") +f.write(key.export_key(format='PEM')) +f.close() + +# export public key +f = open("publickey.pem", "wt+") +f.write(key.public_key().export_key(format='PEM')) +f.close() + +f = open("publickey.pem", "rt") +key = ECC.import_key(f.read()) +print(key) diff --git a/ECC/privatekey.pem b/ECC/privatekey.pem new file mode 100644 index 0000000..ad84878 --- /dev/null +++ b/ECC/privatekey.pem @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgUqs0swLxRuyc0yCR +QTiFexisOy7p2gNkhrppy/tsTPChRANCAAQ55jBJtJoY6S3micNjZkOGSm9XgwIG +D6Fnt3nWRbonBFAYWCMdKZnGhbdbAacc/QKVOtlHZwnhOAzkbhzvpz4O +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/ECC/publickey.pem b/ECC/publickey.pem new file mode 100644 index 0000000..70939d2 --- /dev/null +++ b/ECC/publickey.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOeYwSbSaGOkt5onDY2ZDhkpvV4MC +Bg+hZ7d51kW6JwRQGFgjHSmZxoW3WwGnHP0ClTrZR2cJ4TgM5G4c76c+Dg== +-----END PUBLIC KEY----- \ No newline at end of file diff --git a/RSA/encrypt.py b/RSA/encrypt.py new file mode 100644 index 0000000..45c2beb --- /dev/null +++ b/RSA/encrypt.py @@ -0,0 +1,14 @@ +from Crypto.Cipher import PKCS1_OAEP as pk +from Crypto.PublicKey import RSA + +key = RSA.import_key(open("publickey.pem", "r").read()) +cipher = pk.new(key) + +message = "attack at dawn" +encd = cipher.encrypt(bytes(message, "utf-8")) +print(encd) + +dkey = RSA.import_key(open("privatekey.pem").read()) +dcipher = pk.new(dkey) +dmessage = dcipher.decrypt(encd) +print(dmessage) diff --git a/RSA/genkeys.py b/RSA/genkeys.py new file mode 100644 index 0000000..fa38db1 --- /dev/null +++ b/RSA/genkeys.py @@ -0,0 +1,18 @@ +from Crypto.PublicKey import RSA + +# generate keypair +key = RSA.generate(2048) + +# export private key +f = open("privatekey.pem", "wb+") +f.write(key.export_key('PEM')) +f.close() + +# export public key +f = open("publickey.pem", "wb+") +f.write(key.public_key().export_key(format='PEM')) +f.close() + +f = open("publickey.pem", "rt") +key = RSA.import_key(f.read()) +print(key.encrypt(b"attack at dawn",32)) diff --git a/RSA/privatekey.pem b/RSA/privatekey.pem new file mode 100644 index 0000000..4295b72 --- /dev/null +++ b/RSA/privatekey.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEA1/U19NJAzlURKvS5mRp6Glv+vteUdVSB1OzOedtPDQx0f0U0 +y4OEadHw1QZPfVNN/qHxG69/LNh0i/zHtjW/B8rc3Meg61zq8ZYWFoM9tc3g72ZR +z1jTh/ZQp1WsuuNH70akXcsUAVqzAOYtdf11ayu3WMutfNfsOISdl+4yCqeE9cal +8Sesuh68hNbxtBOo+QLF76jNFG5DVmrU/dbLjp4yG5d1Y6Rj+Vqddr9r4qdvj8gH +erA1yaYYAw9MIDWyxB1K26Bnd0qP5pq5orLWBaH2b4apYilGEInSG9TpKb6uWWDz +fnKvb3fVcUarValG+2VWT48vVwVEV3y4YIbFpwIDAQABAoIBAGJptuRx+iFtB61N +J9UbCUDA4pbCdD+Busa3AaLra5tVLTOgbJ4/uVRl3TuerBO/JkBfORp2P9zGaVov +4CzrUjoxWrPr7yvCxLhCPp+UwEb84sAGH0r/vinr+DZBZz0lfO8QALBTbrLtS7yh +qF7oGZ20ptF6w/0sAtSArraBUGGkvhIC6p71uVh8GeW+VXBJ+wKrRBAkOV/EiITw +97Of7Ch8xxPQlQof3jeEHbzoACuZmhi+QDmhRUTQmW9nbtSyUHuVC/VGCed12yJa +R9zuga9PmcSX87f8vaDGb0Gq9DP/D6lZBGblgZRosCYr0USySlmGaMc/KkInuv+m +g6m7dd0CgYEA4oejefEnzSA4AZweCDZrK9WQ9pjOcCDjW1qnUHNfpu+FXKoBLxT5 +6HupgLR4kL12LhrU2okXTqzuIc2IF268gzJ4CqhcZTu73Aj/t1GxBk/5ibtOPMX5 +gyIGbe7NwuqLALkSiIoYdSny2Tq1Nn+98o/MYJWmuDOiCoTtGC+/ZPsCgYEA9A17 +d+4DU0MxrsBY6lNXDfPstKFlFYb16MoXKgA283NIcfAGABBvjHA37UaBzatrau7B +hzbIx/72fZmeEsLFG9IKZsq4XVZvrjpZMo52pLyTwM3emRtNSBgJ4uQyNfR/Jrhk +NZiUZDsnZwkiQ5UHzx48MHnJmBkj4RR+s9BASkUCgYB6PyaKfQi0mul+fOh8GBn3 +2tXTLh1hx23Kc/6M3OZGqUW3/wqKhPBkdK/BhCL4QTZQpSwvDwJj89DCry79LkZP +KuI7JiZOf1De6oBNRqmYtXn9yPXsuA3xpWAA3Xlu8bG33yhQRO3z9IJYlmUKlx9D +kjSB/uCs0ThmItvsTIAmFwKBgBeIAUKkCWAK14yA8VHOrVMkFMup0CROOgGzEp6z +HJlGoVKTEREKhKbm3w2awcNB5v6NfM17w8o81ClyGWK3suemzefxXetp/SSwbY9J +WzkxEZICh5b9oer0nmdpF0pKg8QI/WiJiK1NYtQ1dj9L7E/VG3qVE5H9wo7eOgU+ +bCR9AoGAYPb1t6/l4+PnllAFKIYAuCfAwFBw5Zd/nqAFupIStDtqyKPqQZSxXukR +ib1jYka4nN26pMjRDRQj5xZbPoOWRYzrsFo3Zue4eYFsRu2i3CEzxU6am/saPWS0 +ci4zBQH2+peHskkME6CEQ1V87PbFJeoWWT5Yc5h9XUfEgfyzrTI= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/RSA/publickey.pem b/RSA/publickey.pem new file mode 100644 index 0000000..2ecc4ed --- /dev/null +++ b/RSA/publickey.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1/U19NJAzlURKvS5mRp6 +Glv+vteUdVSB1OzOedtPDQx0f0U0y4OEadHw1QZPfVNN/qHxG69/LNh0i/zHtjW/ +B8rc3Meg61zq8ZYWFoM9tc3g72ZRz1jTh/ZQp1WsuuNH70akXcsUAVqzAOYtdf11 +ayu3WMutfNfsOISdl+4yCqeE9cal8Sesuh68hNbxtBOo+QLF76jNFG5DVmrU/dbL +jp4yG5d1Y6Rj+Vqddr9r4qdvj8gHerA1yaYYAw9MIDWyxB1K26Bnd0qP5pq5orLW +BaH2b4apYilGEInSG9TpKb6uWWDzfnKvb3fVcUarValG+2VWT48vVwVEV3y4YIbF +pwIDAQAB +-----END PUBLIC KEY----- \ No newline at end of file diff --git a/prikey.pem b/prikey.pem deleted file mode 100644 index b6b628f..0000000 --- a/prikey.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEAuk5egzauVPCxuNvWcJAAISIxcvsdXQFFB5lYUdOgv8Dcyva/ -9kh76R2TEay0K3kEpXBx/M4YdiAIg0XoTYUxWNR3vGy4sWuAkF1WPF0hCJcx/GGC -Cszl7NqMDz7uedBSkJG4sIyOCnmxJli/Y7O+xoENb1DvJ4U7b0n3AHkovlsfkw8z -wOVsc9dUnPbZmrzbd99HYoRFPKnAVgF+vGY62qRj2GvsJzRAC0K8HMxJv0r/V+3O -+fwqGCnJlCcadgMJUuHPDVdYVXgEZZ1iYdwFpPHLML2DEOd3y3DJAy1F59IkEGAr -ULQbu7SdqwaFkU1Y2euZXb/J1q/9C/GhppQH9QIDAQABAoIBACxgf3W8wCC+Zm7U -eos8WbOKvAGZ3AArzcAGIDn5cUhLjawQw1/MGyvHXiEvJIlYXal0k8o2YzA76Bsw -uyk/6SWyEkVBFms4YprAiMp/Gl+79+2YYkvlS30z/3mgMVi1rPz/oOD40dqf6vjp -2cjLZ01MLyGNQzIEM8iJ8zpbIb/Zd496n6awH+am4+9tD5o87aI0mx0PwS0zCUfX -bFg6ns42XS2FuAiKeqMkmNcoo6G0E/6zDw7dk4MfJ5UNDIkSJ+r3UHjXOi1Zn4BW -0uNYIV9BdJlyiKTB+edTxe0IzSpaBnPp+3f5CKeR9V/T3apLet/EFbYzyJ0KSi31 -MTUW64ECgYEA0FJ++cqVSUz2AtBOY9yF362LlRH60DQe7JiDHAFZmhN/iMw+VBOr -KsSOAtSx01Cr5iD9KO/CqJCVFmdM4lzvJklcpOyNhNwt8B8kc8R+QLi+wfBCLy3q -ODp7UcWhKAV3hsAGx1ct8fWNtkfI7v+BaPN6ablNFYKHJa5RvUTsizUCgYEA5PH1 -ezOLDukj+QRf3DE2u0HZRWmv807gA1+tuicDn9JAbK7FFLbdANDwd2TC5wYGGUaR -Trk6CGKlp0H/P0VJbjUIHQOtLz4Xao91wU8iLdrcKeVoELgJqO0em3YUdOEpcdUT -y06SBImz3T+NS/NP7GcxbSJ+Fqc07p2iAUGAYcECgYEAonQixuK/JklY83rEFsXq -tDKeziIWSHTMxM5uN9GpsSiRZPl5hZFNAu4CnJyHC/Y2ByEkqt7GGzOcv7rQzxmP -+XhuQcKi3b/iJwXyJEFP/2LSh2S4CBizNSQN9Qe8E/ynaDKpVpxanPxThZlXTWF8 -5n4wsO+q+CIxCCZ3YbS1Dh0CgYEAuOWwG4/E/oXLR5EA2hPk39aOYkC4mQdaY18i -LvTTOH/VB/EduVz1n3MewU3fGjUDN+aF884j0CHbJvll6vNKGnc51jTh6QV8Y9L4 -huYh9GaM6EkdgmMfag4WafczDjHKBuTO16Lcyk1rtYNd2bjnE0VD5Z+1tRXU6eDk -tZ7w0AECgYEAo+tRkqj12gVWYFNK5Ij7zfzn7Iv0pGiyq+sa+8PBEeziKGGRPyjn -KlpAYmOlSr9aKAtE8JKCvrAfrQHFo3dQRxWQAppiuY38zu2dxXUOpdF3Wb9Tfk4Y -MMDhzybUSNa0tq4rVg6xaeQvIwNx2SGk93tUul0JBh6vzrF+eB7WYu8= ------END RSA PRIVATE KEY----- diff --git a/privatekey.pem b/privatekey.pem new file mode 100644 index 0000000..4295b72 --- /dev/null +++ b/privatekey.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEA1/U19NJAzlURKvS5mRp6Glv+vteUdVSB1OzOedtPDQx0f0U0 +y4OEadHw1QZPfVNN/qHxG69/LNh0i/zHtjW/B8rc3Meg61zq8ZYWFoM9tc3g72ZR +z1jTh/ZQp1WsuuNH70akXcsUAVqzAOYtdf11ayu3WMutfNfsOISdl+4yCqeE9cal +8Sesuh68hNbxtBOo+QLF76jNFG5DVmrU/dbLjp4yG5d1Y6Rj+Vqddr9r4qdvj8gH +erA1yaYYAw9MIDWyxB1K26Bnd0qP5pq5orLWBaH2b4apYilGEInSG9TpKb6uWWDz +fnKvb3fVcUarValG+2VWT48vVwVEV3y4YIbFpwIDAQABAoIBAGJptuRx+iFtB61N +J9UbCUDA4pbCdD+Busa3AaLra5tVLTOgbJ4/uVRl3TuerBO/JkBfORp2P9zGaVov +4CzrUjoxWrPr7yvCxLhCPp+UwEb84sAGH0r/vinr+DZBZz0lfO8QALBTbrLtS7yh +qF7oGZ20ptF6w/0sAtSArraBUGGkvhIC6p71uVh8GeW+VXBJ+wKrRBAkOV/EiITw +97Of7Ch8xxPQlQof3jeEHbzoACuZmhi+QDmhRUTQmW9nbtSyUHuVC/VGCed12yJa +R9zuga9PmcSX87f8vaDGb0Gq9DP/D6lZBGblgZRosCYr0USySlmGaMc/KkInuv+m +g6m7dd0CgYEA4oejefEnzSA4AZweCDZrK9WQ9pjOcCDjW1qnUHNfpu+FXKoBLxT5 +6HupgLR4kL12LhrU2okXTqzuIc2IF268gzJ4CqhcZTu73Aj/t1GxBk/5ibtOPMX5 +gyIGbe7NwuqLALkSiIoYdSny2Tq1Nn+98o/MYJWmuDOiCoTtGC+/ZPsCgYEA9A17 +d+4DU0MxrsBY6lNXDfPstKFlFYb16MoXKgA283NIcfAGABBvjHA37UaBzatrau7B +hzbIx/72fZmeEsLFG9IKZsq4XVZvrjpZMo52pLyTwM3emRtNSBgJ4uQyNfR/Jrhk +NZiUZDsnZwkiQ5UHzx48MHnJmBkj4RR+s9BASkUCgYB6PyaKfQi0mul+fOh8GBn3 +2tXTLh1hx23Kc/6M3OZGqUW3/wqKhPBkdK/BhCL4QTZQpSwvDwJj89DCry79LkZP +KuI7JiZOf1De6oBNRqmYtXn9yPXsuA3xpWAA3Xlu8bG33yhQRO3z9IJYlmUKlx9D +kjSB/uCs0ThmItvsTIAmFwKBgBeIAUKkCWAK14yA8VHOrVMkFMup0CROOgGzEp6z +HJlGoVKTEREKhKbm3w2awcNB5v6NfM17w8o81ClyGWK3suemzefxXetp/SSwbY9J +WzkxEZICh5b9oer0nmdpF0pKg8QI/WiJiK1NYtQ1dj9L7E/VG3qVE5H9wo7eOgU+ +bCR9AoGAYPb1t6/l4+PnllAFKIYAuCfAwFBw5Zd/nqAFupIStDtqyKPqQZSxXukR +ib1jYka4nN26pMjRDRQj5xZbPoOWRYzrsFo3Zue4eYFsRu2i3CEzxU6am/saPWS0 +ci4zBQH2+peHskkME6CEQ1V87PbFJeoWWT5Yc5h9XUfEgfyzrTI= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/recieve.py b/recieve.py index 7145147..0d25f2a 100644 --- a/recieve.py +++ b/recieve.py @@ -1,5 +1,6 @@ import socket -from Crypto.Cipher import PKCS1_OAEP as RSA +from Crypto.PublicKey import RSA +from Crypto.Cipher import PKCS1_OAEP as pkrsa from Crypto.Cipher import AES import os import glob @@ -39,13 +40,14 @@ def getStream(bytelen): done = True print(f"{len(fullmsg) - HEADERSIZE} | {msglen}") -# TODO decrypt text with PGP key -def decryptPGP(text): - return text - # keytext = open("prikey.pem", "r").read() - keytext = "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEAuk5egzauVPCxuNvWcJAAISIxcvsdXQFFB5lYUdOgv8Dcyva/\n9kh76R2TEay0K3kEpXBx/M4YdiAIg0XoTYUxWNR3vGy4sWuAkF1WPF0hCJcx/GGC\nCszl7NqMDz7uedBSkJG4sIyOCnmxJli/Y7O+xoENb1DvJ4U7b0n3AHkovlsfkw8z\nwOVsc9dUnPbZmrzbd99HYoRFPKnAVgF+vGY62qRj2GvsJzRAC0K8HMxJv0r/V+3O\n+fwqGCnJlCcadgMJUuHPDVdYVXgEZZ1iYdwFpPHLML2DEOd3y3DJAy1F59IkEGAr\nULQbu7SdqwaFkU1Y2euZXb/J1q/9C/GhppQH9QIDAQABAoIBACxgf3W8wCC+Zm7U\neos8WbOKvAGZ3AArzcAGIDn5cUhLjawQw1/MGyvHXiEvJIlYXal0k8o2YzA76Bsw\nuyk/6SWyEkVBFms4YprAiMp/Gl+79+2YYkvlS30z/3mgMVi1rPz/oOD40dqf6vjp\n2cjLZ01MLyGNQzIEM8iJ8zpbIb/Zd496n6awH+am4+9tD5o87aI0mx0PwS0zCUfX\nbFg6ns42XS2FuAiKeqMkmNcoo6G0E/6zDw7dk4MfJ5UNDIkSJ+r3UHjXOi1Zn4BW\n0uNYIV9BdJlyiKTB+edTxe0IzSpaBnPp+3f5CKeR9V/T3apLet/EFbYzyJ0KSi31\nMTUW64ECgYEA0FJ++cqVSUz2AtBOY9yF362LlRH60DQe7JiDHAFZmhN/iMw+VBOr\nKsSOAtSx01Cr5iD9KO/CqJCVFmdM4lzvJklcpOyNhNwt8B8kc8R+QLi+wfBCLy3q\nODp7UcWhKAV3hsAGx1ct8fWNtkfI7v+BaPN6ablNFYKHJa5RvUTsizUCgYEA5PH1\nezOLDukj+QRf3DE2u0HZRWmv807gA1+tuicDn9JAbK7FFLbdANDwd2TC5wYGGUaR\nTrk6CGKlp0H/P0VJbjUIHQOtLz4Xao91wU8iLdrcKeVoELgJqO0em3YUdOEpcdUT\ny06SBImz3T+NS/NP7GcxbSJ+Fqc07p2iAUGAYcECgYEAonQixuK/JklY83rEFsXq\ntDKeziIWSHTMxM5uN9GpsSiRZPl5hZFNAu4CnJyHC/Y2ByEkqt7GGzOcv7rQzxmP\n+XhuQcKi3b/iJwXyJEFP/2LSh2S4CBizNSQN9Qe8E/ynaDKpVpxanPxThZlXTWF8\n5n4wsO+q+CIxCCZ3YbS1Dh0CgYEAuOWwG4/E/oXLR5EA2hPk39aOYkC4mQdaY18i\nLvTTOH/VB/EduVz1n3MewU3fGjUDN+aF884j0CHbJvll6vNKGnc51jTh6QV8Y9L4\nhuYh9GaM6EkdgmMfag4WafczDjHKBuTO16Lcyk1rtYNd2bjnE0VD5Z+1tRXU6eDk\ntZ7w0AECgYEAo+tRkqj12gVWYFNK5Ij7zfzn7Iv0pGiyq+sa+8PBEeziKGGRPyjn\nKlpAYmOlSr9aKAtE8JKCvrAfrQHFo3dQRxWQAppiuY38zu2dxXUOpdF3Wb9Tfk4Y\nMMDhzybUSNa0tq4rVg6xaeQvIwNx2SGk93tUul0JBh6vzrF+eB7WYu8=\n-----END RSA PRIVATE KEY-----" - key = RSA.importKey(keytext) - return key.decrypt(text)[0] +def decryptRSA(data): + key = RSA.import_key(open("privatekey.pem").read()) + cipher = pkrsa.new(key) + return cipher.decrypt(data) + +# simplifier helper function to call current publickey decryption method +def PKdecrypt(data): + return decryptRSA(data) # decrypt files with given keyset def decryptSet(keyset, vidset, verbose=False): @@ -56,8 +58,9 @@ def decryptSet(keyset, vidset, verbose=False): for i in range(len(vidset)): file_in = open(vidset[i], "rb") nonce, tag, ciphertext = [ file_in.read(x) for x in (16, 16, -1) ] - key = open(keyset[i], "rb") - cipher = AES.new(key.read(), AES.MODE_EAX, nonce) + key = open(keyset[i], "rb").read() + key = PKdecrypt(key) + cipher = AES.new(key, AES.MODE_EAX, nonce) data = cipher.decrypt_and_verify(ciphertext, tag) with open(location + "/" + str(i+1) + ".mp4", "wb+") as mp: mp.write(data) @@ -79,10 +82,6 @@ def downloadFromServer(urlWithPort, verbose=False): if verbose: print(f"Recieved ({i+1}/{int(r.content)})") -# decrypt text -#def decryptText(text, fkey): -# return Fernet(fkey).decrypt(text) - # establish connection with client and download files s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = get_ip()