我不是要求有代码的教程,我正在尝试进行研究,但我想确保我提出正确的问题。
我开始使用AESCryptoServiceProvider,加密了我传入的字符串,我很高兴。经过测试,如果我两次调用它会产生相同的值。然后意识到我没有提供任何形式的密钥,因此应用程序的第二次运行产生了不同的结果。所以我开始阅读,看到RSA公钥/私钥等等。只是想确保我正在按照我正在做的阅读走正确的道路。那里有很多例子,很少提到你放置这些钥匙的地方或你从哪里拿到它们。
答案 0 :(得分:2)
System.Security.Cryptography中有很多密码学函数。
他们有哈希,隐窝,溪流等等。
RSA提供商是一个很好的提供商。并且关于安全地存储常数。我只能建议将它们存储在解决方案中。 您应该无法从源代码中读取它们,因此在构建程序集之后需要有某种安全性。也许混淆,也许别的东西。 关于密钥的生成,请不要使用您自己的系统或任何开发系统。
修改强>
要生成密钥,最好使用用户输入,例如,创建一个小应用程序,计算每个字母输入特定文本所需的时间。
或者使用HRNG / TRNG,硬件随机数生成器(使用来自现实世界的输入,通过传感器检索)。或真随机数发生器,基本上也是HRNG,但主要是其他形式的输入,非常先进 RANDOM.ORG应该可以帮助你。
如果它不是那么极端重要,那就去你的头撞击你的键盘,然后看看结果:)。
答案 1 :(得分:2)
转到AES。 Stack Overflow已经有a wonderful implementation of AES Algorithm作为答案。
答案 2 :(得分:0)
关于“公钥/私钥,我在哪里安全存储这些东西?”,我建议您不要重新发明轮子。 Microsoft已经花费了大量精力来构建,并且正在积极维护并(希望)改进存储私钥的基础架构:https://msdn.microsoft.com/en-us/library/windows/desktop/bb204778%28v=vs.85%29.aspx。您可以使用本机密钥存储。