代码之家  ›  专栏  ›  技术社区  ›  macropas

是否可以在非对称加密中使用纯加密和解密密钥,而不是使用私钥和公钥?

  •  1
  • macropas  · 技术社区  · 14 年前

    是否可以使用纯加密和解密密钥而不是私钥和公钥?如我在.NET中所知,非对称RSA实现私钥 RSAParameters parameters = (new RSACryptoServiceProvider()).ExportParameters(true) 是公钥的超集。使用私钥,我们可以加密和解密数据。但是 我只需要解密的密钥 数据。如何做到这一点?

    我尝试了使rsaparameters字段无效,但rsacryptoServiceProvider对象无法导入此类参数。

    4 回复  |  直到 10 年前
        1
  •  2
  •   Dean J    14 年前

    如果你问我认为你在问什么,你就是在解决这样一个问题:

    你加密了一些数据。你把它发送给客户,希望他们能够解密它,但是你做到了。 希望他们能够加密任何东西,因为这样他们就可以说服 其他 他们是你的客户。

    就这么近吗?你能告诉我们你在解决什么问题吗?

    对于线程上的其他人来说,这听起来很明显,OP想要一个只解密的密钥,而不是通常的只加密的公钥。

    编辑:注释是正确的,因为私钥不能用于加密,但是在给定私钥的情况下生成公钥并不那么困难。如果您拥有私钥,那么实际上可以同时拥有这两个密钥。

    编辑2:op,你应该看看 digital signatures . 您可以签署一条消息(使用私钥),然后用公钥确认签名,我认为这正是您要求的。

        2
  •  1
  •   Henk Holterman    14 年前

    要解码数据,您需要 私钥。取决于它是如何编码的。

    坚持标准模式,小心点 从未 分发您的私钥。


    从你的评论(到各种答案),你只需要签署(你的数据散列)。用每个人都能拥有的密钥加密数据是没有用的。

    签名有标准的功能和模式。

        3
  •  1
  •   Stefan Steinegger    14 年前

    我认为您需要使用私钥进行解密,使用公钥进行加密。

    接收者(解密者)将其公钥发送给发送者(加密者)。所以每个人都可以发送信息,只有接收者才能阅读。这就是你需要的?

    如果需要确保邮件来自某个发件人,则需要使用自己的私钥添加签名。接收者可以使用发送者公钥来验证这一点。

        4
  •  0
  •   Slartibartfast    14 年前

    如果您希望确保私钥持有者不能加密某些内容,从而使结果与公钥持有者发送的消息不可区分,那么您可以简单地对数据进行双重包装。

    只需要两对钥匙。

    A端获取密钥对1的私钥和密钥对2的公钥。 B端获取密钥对1的公钥和密钥对2的私钥。

    B端首先用密钥对1的公钥进行加密,然后用密钥对2的私钥进行加密,发送自己的消息。

    A端使用密钥对2的公钥和密钥对1的私钥(按此顺序)对结果进行解密。

    A端可以生成密钥对1的公钥,但不能生成密钥对2的私钥,因此A端不能生成有效消息。

    相反的方向是相反的。

    反面:如果你有一个中心人(或服务器),每个人(或计算机)都在与之通信,那么每个人都需要自己的私钥,并且他们需要与他们通信的中心人(或服务器)共享相应的公钥。