我需要在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