2017-05-29 2 views
0

Evening Alle,Typeerror beim Erstellen einer SHA512 Hash mit pyCryto

Ich wünsche aa Datei mit Public Key Crypto zu überprüfen, und ich kann nicht herausfinden, warum ich eine Art Fehler für den folgenden Code bekommen, beachten Sie signatureLength = 512

signature = f[:signatureLength] 
f = open('lib/publicKey.pem','rb') 
publicKey = RSA.importKey(f.read()) 
hash = SHA512.new(f[signatureLength:]) 
verification = PKCS1_PSS.new(publicKey) 

Der genaue Fehler ist:

File "C:\Users\Zach Newton\Desktop\pp\lib\files.py", line 77, in verify_file 
    hash = SHA512.new(f[signatureLength:]) 
TypeError: '_io.BufferedReader' object is not subscriptable 

Antwort

1

Sie Neuzuweisung den Namen f:

signature = f[:signatureLength] 
f = open('lib/publicKey.pem','rb') 
publicKey = RSA.importKey(f.read()) 
hash = SHA512.new(f[signatureLength:]) # <-- this isn't the same f anymore 
verification = PKCS1_PSS.new(publicKey) 

Sie sollten so etwas wie dieses statt:

signature = f[:signatureLength] 
with open('lib/publicKey.pem','rb') as pubkeyfile: 
    publicKey = RSA.importKey(pubkeyfile.read()) 
hash = SHA512.new(signature) 
verification = PKCS1_PSS.new(publicKey) 

Aus diesem Grund generische Variablennamen wie f und Wiederverwendung von Namen für etwas ganz anderes abgeraten.

+0

Vielen Dank Mata, sehr geschätzt –

Verwandte Themen