Я реплицирую защитное рукопожатие клиента-сервера TCP в Python с помощью модуля Pycrypto. Когда «сервер» отправляет открытый ключ через розетку, я вынужден конвертировать открытый ключ в строку. The "client" then receives the public key as a string, which cannot be encrypted according the pycrypto module.
I get the error:
AttributeError: 'str' object has no attribute 'encrypt' in reference to enc_data = public_key.encrypt (secret_peece, 12) < /strong> на стороне клиента. < /p>
< /blockquote>
Как конвертировать строку public_key < /code> назад к своему исходному значению, когда он был впервые сгенерирован код RSA?def main():
host = '127.0.0.1'
port = 5000
s = socket.socket()
s.bind((host,port))
s.listen(1)
c, addr = s.accept()
print "Connection from: "+str(addr)
while True:
data = c.recv(1024)
if not data:
break
print "from connected user: "+str(data)
print "Start the SSL Handshake..."
a = raw_input('Press enter to generate the key pair. ')
key = RSA.generate(1024, random_generator)
public_key = key.publickey()
print "Key pair generated"
a = raw_input('Press enter to send public key to client ')
print "Sending key..."
if c.send(str(public_key)):
print "Public Key Sent"
print "Waiting for secret list..."
if c.recv(1024):
print "List received."
secret_list = c.recv(1024)
a = raw_input('Press enter to check the information from the list. ')
decrypted_info = key.decrypt(secret_list.enc_data)
match_or_not = SHA256.new(decrypted_info).digest() == secret_list.hash_value
if match_or_not:
print "Info Matches. Sending the ciphertext..."
info_to_be_encrypted = "It seems all secure. Let's talk!"
aes = AES.new(Random.get_random_bytes(16), AES.MODE_ECB)
cipher_text = aes.encrypt(info_to_be_encrypted)
if c.send(cipher_text):
print "Ciphertext sent."
< /code>
клиент -код < /strong> < /p>
def main():
host = '127.0.0.1'
port = 5000
s = socket.socket()
s.connect((host,port))
message = raw_input("-> ")
while message != 'q':
s.send(message)
public_key = s.recv(1024)
print 'Received from server: '+str(public_key)
message = raw_input("->Press enter to verify the public key.")
print "Public Key verified!"
message = raw_input("-> Press enter to prepare the secret list.")
print "Client prepares the secret list."
secret_piece = Random.get_random_bytes(16)
enc_data = public_key.encrypt(secret_piece, 12)
hash_value = SHA256.new(secret_piece).digest()
L = [enc_data, hash_value]
print "List is ready."
message = raw_input("-> Press enter to send the list")
s.send(str(L))
print "List sent."
print "Waiting for ciphertext from the server..."
if s.recv(1024):
print "Ciphertext recieved."
cipher_text = s.recv(1024)
print "The encrypted message is: " + cipher_text
print "The decrypted message is: " + aes.decrypt(cipher_text)
s.close()
Подробнее здесь: https://stackoverflow.com/questions/497 ... ect-python
Как преобразовать ключевую строку обратно в объект ключа Pycrypto? (Python) ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как преобразовать строку ключа обратно в объект ключа pycrypto? (Питон)
Anonymous » » в форуме Python - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как преобразовать строку ключа обратно в объект ключа pycrypto? (Питон)
Anonymous » » в форуме Python - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-