我需要在app.config中存储用户名和密码。我想用Rijndael算法加密这些值。我在哪里存储密钥和IV来解密un和pw?我需要将应用程序部署到具有不同用户的不同服务器上。Rijndael商店IV和密钥
回答
加密web.config或app.config文件通常使用RSA或DPAPI加密完成。
我不确定它是否适合您的情况,只有在应用程序的用户受到限制而不是管理员的情况下才有效。
DPAPI可能是不使用硬件设备即可完成的最佳选择。 RSA不会帮忙。 – 2010-06-28 11:19:21
您可以在多台服务器上使用RSA加密,因为该密钥可以导出,但在我看来这不是一个好的解决方案。 – 2010-06-28 13:37:13
当然不会存储在程序集中 - 一个相对简单的IL看起来可能会放弃这个秘密。即使模糊它,也不会提供额外的安全性。
最简单的就是在不同的服务器上本地使用OS \文件系统安全来控制对密钥文件的读取访问。
理想情况下,无法通过网络访问的位置中的文本文件上,只能通过具有严格权限的本地文件系统访问。
如果您需要分发应用程序,你可以使用下面的结构
C:\MyApp
密钥和其他私人信息C:\MyApp\www
虚拟目录
这将防止窥视眼睛(或网络服务器错误)访问数据。只有物理访问机器才有可能揭示它,而且通常可以更好地控制。
如何使用机器密钥加密办呢?有(据我所知)没有这样做的简单方法,但你可以使用反射破解你的方式进入框架。机器密钥不是或仅部分存储在机器上。如果将ASP.NET配置为'为每个应用程序生成唯一密钥',则应用程序的路径用于派生密钥。
的代码将是这样的:
private static MethodInfo _cookieEncryptMethod;
private static MethodInfo _cookieDecryptMethod;
public static string MachineKeyEncrypt(string data)
{
if (_cookieEncryptMethod == null)
{
_cookieEncryptMethod = Type.GetType("System.Web.Security.CookieProtectionHelper").GetMethod("Encode", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.InvokeMethod);
}
var dataBytes = Encoding.UTF8.GetBytes(data);
return (string) _cookieEncryptMethod.Invoke(null, new object[] { CookieProtection.All, dataBytes, dataBytes.Length });
}
public static string MachineKeyDecrypt(string source)
{
if (_cookieDecryptMethod == null)
{
_cookieDecryptMethod = Type.GetType("System.Web.Security.CookieProtectionHelper").GetMethod("Decode", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.InvokeMethod);
}
var data = (byte[]) _cookieDecryptMethod.Invoke(null, new object[] { CookieProtection.All, source });
return Encoding.UTF8.GetString(data);
}
- 1. AES加密密钥和IV
- 2. openssl_encrypt,openssl_decrypt密钥,iv
- 3. 发送AES密钥和IV客户
- 4. 使用Rfc2898DeriveBytes类获取密钥和IV
- 5. Android商店字节[]在密钥库中
- 6. OpenSSL编成密码随机密钥和IV-存放在DB
- 7. openssl-使用密钥和IV解密base64字符串
- 8. Windows商店应用程序 - 加密密钥对话框
- 9. Rijndael加密/解密
- 10. 如何使用已提供的密钥和iv解密AES加密数据
- 11. 解密密文TripleDes的静态密钥和IV通过的OpenSSL工具
- 12. 跨平台的加密/解密 - 处理密钥和初始化向量(IV)
- 13. Symetric加密 - 盐和IV
- 14. 从CryptoJS和PHP的AES加密字符串导出密钥和IV
- 15. PHP使用密码和盐来获得IV和密钥替代C#Rfc2898DeriveBytes(AES256)
- 16. Rijndael加密
- 17. .net MVC中的密钥和IV存储位置在哪里?
- 18. 在AES中使用IV和密钥派生256 BIT
- 19. 将PhoneGap Build App部署到Google Play商店:多个密钥?
- 20. 上传到Play商店时Google Maps API密钥无法使用
- 21. 通过api密钥和令牌获得在线商店的授权
- 22. 使用Java解密openssl aes-256-cbc使用提供的密钥和iv
- 23. AES使用相同的密钥和IV加密明文一样反复
- 24. 错误:无法从商店密钥库中读取密钥更改Keystore被篡改,或者密码不正确
- 25. 对于许多文件,Rijndael加密可以使用静态IV值吗?
- 26. 如何从商店中读取私钥
- 27. 从C++代码和命令行生成相同的密钥和IV
- 28. Rijndael 256加密:Java和.NET不匹配
- 29. Rijndael算法(如何创建我们自己的密钥)
- 30. Android的密钥存储提供商 - 如何存储密钥
@IUnknownPointer:真的吗?像什么? – 2010-06-28 11:15:51