2

我正在尝试在 C# 中实现以下内容:

我想要一个内部包含公钥加密例程的生成器。它可以采用提供给它的字节数组(通常由下面描述的客户端)并使用其私钥对其进行加密。

客户端有一个与生成器共享的公钥。它从生成器获取结果并使用公钥对其进行解密。它采用最初提供给生成器的字节数组并比较结果以查看它们是否对齐。这个想法是,如果它们匹配,它能够在一定程度上确定生成加密字节的人拥有私钥。它还能够验证特定的加密值是否与其提供的数据相对应。

我看到的大多数内置 C# 公钥加密库都希望将私钥与解密相关联(例如 RSACryptoServiceProvider)。我明白为什么,因为很多场景都涉及保护过程的解密端而不是加密。是否有任何 C# 库可以直接保护加密过程?我整个早上都在尝试看 Bouncy Castle,但即使是基本场景,我也很难让它发挥作用。该文档还有一些不足之处......

同样,我的主要目标是确保产生加密的任何东西都拥有私钥。客户端还必须确保生成器的结果与其提供的信息相对应。如果我遗漏了可能更好地符合可用库的替代方法,我会全神贯注:)

4

1 回答 1

4

你写:

同样,我的主要目标是确保产生加密的任何东西都拥有私钥。

正如 CodesInChaos 所提到的,您可以正确使用签名来实现这一点。通常签名用于验证某些数据是由持有某个私钥的人产生的,但在这里您可以使用它来验证密钥持有者本人。如果您要求他签署您制作的东西,您可以使用签名检查来检查他是否拥有与您的公钥对应的私钥。

签名实际上是通过对一些数据进行单向散列,然后使用私钥加密这个散列来工作的。然后可以使用公钥来验证签名,方法是解密散列并将其与重新计算的数据散列值进行比较。只有拥有私钥的人才能制作散列的加密版本。你打算首先做的事情。

于 2013-04-14T04:29:42.537 回答