Rijndael 的商店 IV 和钥匙
我需要将用户名和密码存储在 app.config 中。我想使用 Rijndael 算法加密这些值。我在哪里存储用于解密 un 和 pw 的密钥和 IV?我需要将应用程序部署到不同用户的不同服务器上。
I need to store username and password in an app.config. I want to encrypt these values using Rijndael algorithm. Where do I store the key and IV for decrypting the un and pw? I need to deploy the application to different servers with different users.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
加密 web.config 或 app.config 文件通常使用 RSA 或 DPAPI 加密来完成。
我不确定它是否适合您的情况,只有当应用程序的用户受到限制而不是管理员时,它才有效。
http://msdn.microsoft.com/en-us/library/ff647398。 ASPX
Encrypting the web.config or app.config file is usually done with RSA or DPAPI encryption.
I'm not sure if it would suit you in your case, it's only effective if the users of the applications are restricted and not administrators.
http://msdn.microsoft.com/en-us/library/ff647398.aspx
绝对不要存储在程序集中 - 相对简单地查看 IL 可能会泄露秘密。即使对其进行混淆,也无法提供额外的安全性。
最简单的方法是在不同服务器上本地使用操作系统\文件系统安全性来控制对密钥文件的读取访问。
Definitely don't store in the assembly - a relatively simple look at the IL would probably give up the secret. Even obsfuciating it, would provide little extra security.
Easiest would be to use the OS \ file-system security locally on the different servers to control read access to the key file.
理想情况下,文本文件位于无法通过网络访问的位置,只能通过具有严格权限的本地文件系统访问。
如果您需要分发应用程序,您可以使用以下结构
C:\MyApp
作为密钥和其他私有信息C:\MyApp\www
作为虚拟目录将防止窥探(或网络服务器错误)访问数据。只有对机器进行物理访问才有可能泄露它,并且通常可以更好地控制。
Ideally on a text file in a location not accessible via web, only via the local filesystem with tight permissions.
If you need to distribute the app, you could use the following structure
C:\MyApp
for the key and other private informationC:\MyApp\www
for the virtual directoryThis will prevent prying eyes (or webserver bugs) to access the data. Only physical access to the machine will potentially reveal it, and that usually can be better controlled.
使用机器密钥加密来做到这一点怎么样? (据我所知)没有简单的方法可以做到这一点,但是您可以使用反射侵入框架。机器密钥没有或仅部分存储在机器上。如果将 ASP.NET 配置为“为每个应用程序生成唯一密钥”,则应用程序的路径将用于派生密钥。
代码会是这样的:
How about using machine key encryption to do it? There is (as far as I know) no easy way of doing this, but you can hack your way into the framework using reflection. The machine key is either not or only partially stored on a machine. If you configure ASP.NET to 'Generate a unique key for each application', the application's path is used to derive the key.
The code would be something like this: