Как зашифровать строку с AES и расшифровать ее на python с сервером и клиентом на Python - PullRequest
0 голосов
/ 16 июня 2019

Я использую Python 3.7. Моя цель - создать сервер, который будет шифровать случайную строку ключом (и у сервера, и у клиента "ключ"), в шифровании AES. Сервер отправит зашифрованный код клиенту, а клиент расшифрует его.

Однако код, который я написал, не показывает мне никаких результатов. Под этим я подразумеваю, что кода «избегают», и я не вижу никакого результата из кода. Это код, который я написал (сервер и клиент):

Сервер:

import socket
import Crypto
import Cryptodome


HOST = '127.0.0.1'  # Standard loopback interface address (localhost)
PORT = 8080        # Port to listen on (non-privileged ports are > 1023)


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
print ('Socket binded to port 8080')
s.listen(0)
print ('socket is listening')

while True:
   c, addr = s.accept()
   print ('Got connection from ', addr)
   string = str(c.recv(1024))
   print(string)
   if string ==  "b'Register'" :
       import random
       import string


       def randomString(stringLength=10):
           letters = string.ascii_lowercase
           return ''.join(random.choice(letters) for i in range(stringLength))
       print("Random String is ", randomString())

       from Crypto.Cipher import AES

       from Crypto.Cipher import AES


       def do_encrypt(message):
           obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
           ciphertext = obj.encrypt(message)
           return ciphertext

Клиент:


import socket

HOST = '127.0.0.1'                         # The server's hostname or IP address
PORT = 8080                                # The port used by the server



import Crypto
import sys
sys.modules['Crypto'] = Crypto


name = ''                                          # Sign in to the server!!

while name != 'Register':
   print('Would you like to Register/Login?')
   name = input()

s = socket.socket()
port = 8080
s.connect(('localhost', port))
z = 'Register'
s.sendall(z.encode())
s.close()
name = ''                                          # Sign in to the server!!

print ("Register request sent")




from Crypto.Cipher import AES

def do_decrypt(ciphertext):
    obj2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
    message = obj2.decrypt(ciphertext)
    return message






from Crypto.PublicKey import RSA

key = RSA.generate(2048)                             # Private key creation
private_key = key.export_key()
file_out = open("private.txt", "wb")
file_out.write(private_key)

public_key = key.publickey().export_key()            # Public key creation
file_out = open("receiver.txt", "wb")
file_out.write(public_key)

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:   # sending the Public key to the server.
   s.connect((HOST, PORT))
   s.sendall(public_key)
   data = s.recv(1024)
   s.close()                                       # Close the socket when done

   print('Received', repr(data))

Источник кода шифрования AES: Отправка зашифрованных строк с использованием сокета в Python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...