这是我的协议:
私钥A和B相同(128位)
我想在CBC模式下使用带有AES的此协议发送文本,因此我创建了此代码,但在签名中不能正常工作,
bytes object has no attribute n
代码如下:
def firmar(self, datos):
try:
h = SHA256.new(datos)
signature = pss.new(self.keyprivada).sign(h)
return signature
except (ValueError, TypeError):
return None
def comprobar(self, text, signature):
h = SHA256.new(text)
print(h.hexdigest())
verifier = pss.new(self.keypublica)
try:
verifier.verify(h, signature)
return True
except (ValueError, TypeError):
return False
答案 0 :(得分:0)
<罢工> 首先,您使用的是欧洲央行,由于文本与其输出之间的关系是恒定的,因此这是不安全的。
其次,CBC需要IV,因此需要不同的实现方式。
AES是 NOT 一种非对称加密算法
表示必须使用相同的密钥对其进行加密和解密。您可以像使用非对称加密方法一样使用公钥和私钥。
如果您要正确实现RSA ,则可以生成一个随机字节数组并将其用作密钥,然后将其加密发送给接收者以解密并使用它作为解密aes的密钥,因为它是相同的。
您使用私有密钥对数据进行签名... RSA要求您使用公共密钥(现在为私有-未分发)对其进行加密,但是您无法使用公共密钥对使用私有密钥加密的内容进行解密。取而代之的是,您分发“私钥”进行解密,并保留“公钥”进行加密,因此没有其他人可以对数据进行加密或签名。
公钥和私钥之间有关系!您不能只使用随机字节数组。
阅读Wikipedia文章。