У меня есть этот код, но когда я его запускаю, он принимает только переменную «to_address» определенной длины. Когда это слишком долго, я получаю исключение:Pycrypto string too long to sign/verify
Traceback (most recent call last):
** IDLE Internal Exception:
File "C:\Python27\lib\idlelib\run.py", line 325, in runcode
exec code in self.locals
File "C:\Python27\lib\idlelib\run.py", line 111, in main
seq, request = rpc.request_queue.get(block=True, timeout=0.05)
File "C:\Python27\lib\Queue.py", line 176, in get
raise Empty
Empty
Это мой код:
import hashlib
import sqlite3
import socket
import time
from Crypto.PublicKey import RSA
# import keys
key_file = open('keys.pem','r')
key = RSA.importKey(key_file.read())
public_key = key.publickey()
private_key_readable = str(key.exportKey())
public_key_readable = str(key.publickey().exportKey())
address = hashlib.sha224(public_key_readable).hexdigest()
to_address = str(raw_input ("Send to address: "))
amount = str(raw_input ("How much to send: "))
timestamp = str(time.time())
transaction = str(timestamp) +":"+ str(address) +":"+ str(to_address) +":"+ str(amount)
signature = key.sign(transaction, '')
print "Client: Signature: "+str(signature)
if public_key.verify(transaction, signature) == True:
if int(amount) < 0:
print "Client: Signature OK, but cannot use negative amounts"
else:
...process...
else:
print "Client: Invalid signature"
raise
#enter transaction end
Если кто-нибудь знает, как обойти это ограничение длины, будет понятно. Нужно ли мне зашифровать строку, чтобы сделать ее короче, чтобы проверить ее, а затем снова расшифровать?
Спасибо, тестирование в настоящее время – HCLivess