实例和类:给定x1时需要x参数

2024-09-27 07:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

为了能够测试不同的加密方案,我编写了以下类。但是,我无法从不同的加密方案实例化对象。有人能指出一些不合理的事情,我没有赶上自动取款机吗?我不知道为什么它不起作用。它给出了一个TypeError: encrypt() takes exactly 3 arguments (2 given),但是它确实有自己的传递,所以我不知道如何在其他传递的基础上修复它。你知道吗

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))

Tags: keyselfmessagereturnparaminitdefsec
1条回答
网友
1楼 · 发布于 2024-09-27 07:21:25

一个参数传递给绑定方法:

return self.bc1.encrypt(
    self.bc2.encrypt(tweak) * self.bc3.encrypt(message) + 
    self.bc4.encrypt(tweak))

这是BC.encrypt()方法的一个参数,这个方法在selfmessagekey之外取2。你知道吗

要么为key传递一个值,要么从BC.encrypt()方法定义中删除该参数(并从其他地方获取密钥;可能从__init__中设置的实例属性中获取密钥)。你知道吗

相关问题 更多 >

    热门问题