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

RSA加密-使用私钥加密

  •  3
  • Juzzbott  · 技术社区  · 14 年前

    我要求用私钥对一系列数据进行加密,这样只有我才能创建加密的数据,并让我的应用程序用公钥读取它。这背后的想法是为我的应用程序创建一个许可文件,加密许可详细信息,并让应用程序读取这些数据。这将阻止除我之外的任何人生成许可证,但是将允许应用程序通过公钥读取它。

    这样做的目的是控制加密的数据,而不关心谁可以读取它,只关心谁可以创建它。

    使用rsaccryptoserviceprovider,我可以创建我的公钥/私钥,我可以用私钥加密数据,但是当我用公钥解密时,我会得到一个“找不到密钥”异常。

    是否有其他加密提供程序可用于完成此任务,或其他读取许可证详细信息的方法,通过此方法我保留私钥,并将公钥与我的许可证验证应用程序一起分发。

    干杯

    1 回复  |  直到 6 年前
        1
  •  7
  •   Henk Holterman    14 年前

    你需要签字。真正地。

    整个签名API的目标是对散列值进行签名,因为RSA速度慢,所以将散列用作概要。这应该适合你的需要,你总是可以发送未加密的文本旁边。你用签名来验证它。

        2
  •  -1
  •   jww avp    6 年前

    “用私钥加密” 不是有效的加密转换。您遇到问题的原因是,库不支持它,因为它不是有效的加密转换。

    带恢复的签名方案


    这背后的想法是为我的应用程序创建一个许可文件,加密许可详细信息,并让应用程序读取这些数据。这将阻止除我之外的任何人生成许可证,但是将允许应用程序通过公钥读取它。

    从数据安全的角度来看,而不是 “加密许可证详细信息”


    使用RSA进行签名也是不可能的,因为我需要将加密数据与纯文本数据进行比较,以确保许可证有效,并且签名只验证源,而不是它包含的内容。

    我不太明白。无可奉告。。。


    是否有其他加密提供程序可用于完成此任务,或其他读取许可证详细信息的方法,通过此方法我保留私钥,并将公钥与我的许可证验证应用程序一起分发。

    我不知道微软或.Net是否提供了带有恢复功能的签名方案。

    如果您对其他库开放,那么Botan和Crypto++提供带恢复的签名方案。简单的 Wrapper DLL 互操作应该可以正常工作。

    在Crypto++中,您可以使用 RSA Signature Schemes PSSR .

    RSASS<PSSR, SHA256>::Signer signer(privateKey);
    RSASS<PSSR, SHA256>::Verifier verifier(publicKey);
    
    推荐文章