我需要在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. 使用Rijndael加密時的密鑰,鹽和IV
- 2. Rijndael加密功能 - 密鑰/ IV /鹽設置
- 3. AES加密密鑰和IV
- 4. Rijndael加密密鑰
- 5. AES密鑰和iv來自RSA私鑰
- 6. openssl_encrypt,openssl_decrypt密鑰,iv
- 7. AES/Rijndael:在加密數據上搜索 - 靜態鹽和IV
- 8. 使用CryptoJs生成IV和密鑰
- 9. 發送AES密鑰和IV客戶
- 10. 使用Rfc2898DeriveBytes類獲取密鑰和IV
- 11. Android商店字節[]在密鑰庫中
- 12. Rijndael或AES匹配java加密 - 使用salt和密鑰
- 13. 在PHP中生成256位密鑰Rijndael
- 14. 如何從RIJNDAEL 128恢復密鑰?
- 15. Crypto.js用字節數組中的密鑰和iv(向量)解密
- 16. openssl-使用密鑰和IV解密base64字符串
- 17. 使用密鑰和iv的Java AES塊解密
- 18. 將加密密鑰和IV存儲/轉換爲字符串
- 19. OpenSSL編成密碼隨機密鑰和IV-存放在DB
- 20. Windows商店應用程序 - 加密密鑰對話框
- 21. Rijndael加密/解密
- 22. 使用CryptoJS發送'密碼密碼'(密鑰/ iv)
- 23. 如何使用已提供的密鑰和iv解密AES加密數據
- 24. 跨平臺的加密/解密 - 處理密鑰和初始化向量(IV)
- 25. 解密密文TripleDes的靜態密鑰和IV通過的OpenSSL工具
- 26. Android:使用AES加密字符串256位加密使用iv和密鑰
- 27. Symetric加密 - 鹽和IV
- 28. PHP使用密碼和鹽來獲得IV和密鑰替代C#Rfc2898DeriveBytes(AES256)
- 29. 在Android和.Net中使用自定義密鑰和IV的AES 128加密
- 30. 從CryptoJS和PHP的AES加密字符串導出密鑰和IV
@IUnknownPointer:真的嗎?像什麼? – 2010-06-28 11:15:51