4

我不是要一个带代码的教程,我正在尝试做研究,但我想确保我问的是正确的问题。

  • 我可以使用 .NET 开箱即用的最佳加密形式是什么?
  • 公钥/私钥,我在哪里安全地存储这些东西?
  • 为了正确执行此操作,我应该拥有哪些工具?

我从 AESCryptoServiceProvider 开始,加密了我传入的字符串,我很高兴。测试如果我调用它两次,它会得到相同的值。然后意识到我没有提供任何形式的密钥,所以应用程序的第二次运行产生了不同的结果。所以我开始阅读,看到 RSA 公钥/私钥等等等。只是想确保我正在阅读我正在做的正确的道路。那里有很多例子,很少有人提到你把这些钥匙放在哪里,或者你从哪里得到它们。

4

3 回答 3

2

System.Security.Cryptography 中有很多密码学功能。

它们有哈希、密码、流等等。

RSA 提供者是一个很好的提供者。关于安全地存储常量。我只能建议将它们加密存储在解决方案中。您应该无法从源代码中读取它们,因此在程序集构建后需要某种安全性。也许是混淆,也许是别的东西。关于密钥的生成,不要使用你自己的系统,或者我猜的任何开发系统。

编辑:
要生成密钥,您最好使用任一用户输入,例如,只需创建一个小应用程序,计算每个字母键入特定文本所需的时间。

或者使用 HRNG/TRNG,硬件随机数生成器(使用来自现实世界的输入,通过传感器检索)。或者True Random Number Generator,基本上也是HRNG,但大多是用其他形式的输入,很高级。
RANDOM.ORG应该能够帮助你。

如果它不是那么重要,只需用你的头敲击键盘,看看结果:)。

于 2011-03-13T16:03:46.753 回答
2

去AES。Stack Overflow 已经有一个很好的 AES 算法实现作为答案。

于 2011-03-13T16:08:18.060 回答
0

关于“公钥/私钥,我在哪里可以安全地存储这些东西?”,我建议您不要重新发明轮子。微软已经花费了大量精力来构建并积极维护和(希望)改进存储私钥的基础架构:https ://msdn.microsoft.com/en-us/library/windows/desktop/bb204778% 28v=vs.85%29.aspx。您可以使用本机密钥存储。

于 2015-02-19T19:29:44.167 回答