公钥加密与私钥加密

本文关键字:加密 私钥 公钥加密 | 更新日期: 2023-09-27 18:08:54

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

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

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

我看到的大多数内置c#公钥加密库都希望将私钥与解密(如RSACryptoServiceProvider)关联起来。我可以理解为什么,因为许多场景涉及保护过程的解密端而不是加密端。有什么c#库可以直接保护加密过程吗?我整个上午都在看《充气城堡》,但即使是最基本的场景,我也很难让它正常工作。

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

公钥加密与私钥加密

你写:

再次强调,我的主要目标是确保产生加密拥有私钥。

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

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