我用椭圆曲线来生成签名。问题是,每次使用相同的密钥对,它都会生成不同的签名。我和ECDsa一样,也试过了弹跳城堡的图书馆。签名可以同时验证,但是每次使用相同的密钥对时,我都希望得到相同的签名。
每次都能做些什么来生成相同的签名呢?或者用椭圆曲线是不可能的?
发布于 2018-07-30 12:11:48
不,标准的DSA是不确定的,这意味着它依赖密码安全的随机数生成器(准确地说,是在维基百科描述的第三步)。
如果常量用于不同的输入,那么ECDSA将泄漏私钥。这是发生在索尼的私钥签署游戏,被德国混沌电脑俱乐部破获 (但只在122页!)。当然,ECDSA无法判断是否使用了相同的数据。
有一种生成RFC 6979,“数字签名算法(DSA)和椭圆曲线数字签名算法(ECDSA)的确定性用法”中指定的ECDSA签名的确定性方法。
您可以使用C#中的以下Bouncy城堡代码来完成这一任务:
ECDsaSigner signer = new ECDsaSigner(new HMacDsaKCalculator(new Sha256Digest()));这显然是用于区块链技术,如比特币。
https://stackoverflow.com/questions/51592748
复制相似问题