私はこのコードを持っていますが、実行すると特定のlenthの "to_address"変数しか受け付けません。それが長すぎると、私は例外を受け取る:符号が長すぎて署名/検証できません
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