对称和非对称密码学

时间:2018-01-04 11:28:45

标签: c# .net cryptography encryption-symmetric encryption-asymmetric

我正在寻找有关加密的建议。

我正在开发一个.Net应用程序,我需要为它创建一个许可证,所以我打算创建一个加密的许可证文件,我的应用程序将用它来知道它是否已获得许可。

处理许可证如下:

  • 许可证生成:

    1. 生成唯一的对称密钥。
    2. 使用对称密钥加密许可证信息。
    3. 使用非对称公钥加密对称密钥。
    4. 将加密的对称密钥和加密的许可证信息写入文件。
  • 许可证解密:

    1. 我的应用程序将读取许可证文件。
    2. 使用嵌入的非对称私钥解密对称密钥 dll中的xml文件。
    3. 使用解密的对称密钥解密许可证信息。

我的问题是:

  • 如果负责解密许可证的DLL有非对称私钥作为xml嵌入资源,是否可以监视dll以获取密钥并生成新许可证?
  • 我可以使用哪种技术更安全吗?

1 个答案:

答案 0 :(得分:2)

作为一个非常概括的概述,最简单的方法是使用私钥对信息进行签名(实际上并不需要真正加密任何内容),并使用相应的公钥验证签名。就是这样。私钥保持安全,没有它就不能生成有效的新签名,因此如果有人更改签名信息,则签名将变为无效。在它之上不需要额外的对称加密 - 就我而言,这是毫无意义的工作。

有很多库已经足够轻松地完成了这项工作,但手动操作并不难。 https://github.com/dnauck/Portable.Licensing是我以前用过的。

编辑:也是的,一般情况下,反编译.net程序集非常容易,包括从中提取资源。