Ich habe die folgenden Klassen geschrieben, um verschiedene Verschlüsselungsschemata testen zu können. Ich habe jedoch Probleme bei der Instanziierung von Objekten aus dem unterschiedlichen Verschlüsselungsschema. Könnte jemand auf etwas hinweisen, das keinen Sinn ergibt, dass ich nicht atme? Ich bin mir nicht sicher, warum es nicht funktioniert. Es gibt eine TypeError: encrypt() takes exactly 3 arguments (2 given)
, aber es hat sich selbst übergeben, so dass ich nicht weiß, wie man es auf der Basis von den anderen beheben kann.Instanzen & Klassen: erfordert x Argumente, wenn x-1 gegeben
class AXU:
def __init__(self, sec_param):
self.sec_param = sec_param
def getHash(self):
# sample a, b and return hash function
a = random.randrange(self.sec_param)
b = random.randrange(self.sec_param)
return lambda x : a*x+b % sec_param
class BC(object):
def __init__(self, sec_param):
# generate a key
self.sec_param = sec_param
def encrypt(self, message, key):
#encrypt with AES?
cipher = AES.new(key, MODE_CFB, sec_param)
msg = iv + cipher.encrypt(message)
return msg
class tBC(object):
def __init__(self, sec_param):
self.sec_param = sec_param
def encrypt(self, tweak, message):
#pass
return AES.new(message, tweak)
class Trivial(tBC):
def __init__(self):
self.bcs = {}
def encrypt(self, tweak, message):
if tweak not in self.bcs.keys():
bc = BC()
self.bcs[tweak] = bc
return self.bcs[tweak].encrypt(message)
class Our(tBC):
def __init__(self, sec_param):
self.bc1 = BC(sec_param)
self.bc2 = BC(sec_param)
self.bc3 = BC(sec_param)
self.bc4 = BC(sec_param)
# encryption over GF field
def encrypt(self, tweak, message):
return self.bc1.encrypt(self.bc2.encrypt(tweak) * self.bc3.encrypt(message) + self.bc4.encrypt(tweak))
Wo genau denken Sie, dass Sie zwei Argumente (abgesehen von 'self') übergeben? Alle 'encrypt'-Aufrufe haben ein einziges Argument. –
Bitte schließen Sie das * full * traceback ein. Ich kann erraten, wo genau der Fehler auftritt, aber eine vollständige Rückverfolgung würde uns sicher sagen und sicherstellen, dass ich keinen weiteren Fall übersehen habe. –