我试着在哈希表上执行盲法和解盲法。在
我有:
messageHashed = md5.new('MyMessage').digest()
print 'Message MD5:%s' % messageHashed
blindSigned = loadedPublic.blind(messageHashed,123)
print 'Blinded: %s' % blindSigned
blindSigned = loadedPrivate.sign(blindSigned,loadedPrivate.n)
print 'Blinded Signed: %s' % str(blindSigned)
unblind = loadedPrivate.unblind(blindSigned,123)
print '-------------'
print 'Unblinded: %s' % unblind
verify = loadedPrivate.verify(unblind,(loadedPrivate.n,loadedPrivate.d))
print 'Verify: %s' % verify
(我以前已经加载了公钥和私钥,而且工作正常)
现在,我的问题是,当它运行时,我得到以下输出:
^{pr2}$尽管解盲功能记录如下:
unblind(self, M, B)
unblind(M : string|long, B : string|long) : string|long
Unblind message M using blinding factor B.
它似乎不接受它。在
谁能给我指出正确的方向吗?我已经做了几个小时了。在
在我试图复制你的问题时,有两件事很突出:
_RSAobj.blind()
和{long
或{int
不起作用)。一个long
常数是通过在数值末尾加上L
来表示的(例如9001L
)。在_RSAobj.sign()
函数返回一个元组。签名在返回值的元素0中结束。在所以你的代码看起来是这样的:
这段代码运行,但可能并没有完成您真正想要它做的事情;尤其是
verify
最终总是False
。在揭盲后得到的是使用p的
^{pr2}$messageHashed
的有效RSA签名,_RSAobj.verify(self, M, signature)
是正确的函数签名(其中signature
必须是一个2元组,其第0个元素是实际的RSA签名)。所以如果你有这个会像广告中说的那样工作(即
verify
最终应该是True
)。在从我的脑子里想一想,你应该提取签名中包含的摘要,以便将未隐藏的数据取出。在
稍后当我到一台机器测试代码时,我会在这方面做得更好。在
相关问题 更多 >
编程相关推荐