接收端ECDSA解密过程

Posted

技术标签:

【中文标题】接收端ECDSA解密过程【英文标题】:Decryption process of ECDSA from receiver's end 【发布时间】:2020-07-07 14:29:58 【问题描述】:

我在互联网上看到了很多关于如何从发件人的角度实施 ECDSA 的参考资料。那就是通过签名和验证来加密消息。从接收者的角度来看,我没有找到任何相同的实现。我有一个关于here 提到的解密过程的参考资料。但我觉得很难理解。我见过this。它在 C# 中很容易实现,但只完成了签名。谁能告诉我任何用 C# 实现的从接收方解密 ECDSA 的例子吗?

【问题讨论】:

ECDSA 指的是椭圆曲线数字签名算法。顾名思义,它是关于签名,而不是加密。确实可以将 ECDSA 密钥对用于 ECDH,但最好首先将它们视为不同的,其次不要使用 same keypair for both uses。 对于无论如何都很难做到的签名和加密,因为接收方和发送方需要相同的私钥 - 并且没有共享私钥这样的东西:) 我知道k值每次都需要不同。并且需要共享密钥对。那么加密货币交易是如何实现的呢?相同的私钥用于发送和接收资金。他们如何共享私钥? @MaartenBodewes "这是通过签名对消息进行加密并且是验证。"我认为这只是混乱。签名生成不是使用私钥签名。交易需要放在账本中,而不是加密。通常这只会出现with RSA,因为 ECDSA 只是签名生成;它没有等效的加密。 哇,我现在明白了...这就是为什么我们可以在使用 RSA 时解密,如 here 所示。 RSA 是加密(以及签名生成),而 ECDSA 是签名算法。非常感谢。我以前在一个完全不同的页面上。 @MaartenBodewes 【参考方案1】:

Maarten Bodewes,在a comment的问题上说:

“这是通过对消息进行签名和验证来加密消息。”我认为这只是混乱。签名生成不是使用私钥签名。交易需要放在分类账中,而不是加密。通常这只会出现with RSA,因为 ECDSA 只是签名生成;它没有等效的加密。

【讨论】:

以上是关于接收端ECDSA解密过程的主要内容,如果未能解决你的问题,请参考以下文章

ECDSA 参数在 pem 文件和调试过程之间未对齐

ECDSA-php 加密解密

如何使用 Hyperledger Fabric 中生成的 ECDSA 私钥和公钥进行加密和解密

广播的注册发送和接收过程

RSA加密/解密和签名/验签过程理解

用CryptoAPI进行RSA非对称加密解密,该怎么处理