我試圖使用.NET的ProtectedData.Protect方法加密和解密一些文本文件數據。我希望能夠在一臺機器上加密文本(並將其保存到一個文件中)並在另一臺機器上解密文本。這兩臺機器都在同一個域中,並且都在相同的用戶名下運行相同的服務,所以我認爲使用DataProtectionScope.CurrentUser將允許任一服務對文件進行加密和解密。DataProtectionScope.CurrentUser加密似乎不能跨機器
當服務二號試圖解密該文件時,它會拋出一個「密鑰在指定狀態下無效」。其他網站表明,這種問題發生在模仿不正確的情況下,但沒有模仿。這兩種服務都在同一個AD帳戶下運行。它在我看來像服務使用不同的密鑰來加密數據,但我不知道爲什麼會發生這種情況,因爲他們在同一個帳戶下運行。
有沒有其他人遇到這種問題?
我使用加密和decypt的代碼基本上是:
byte[] bytes = Encoding.Unicode.GetBytes(password);
byte[] protectedPassword = ProtectedData.Protect(bytes, null, DataProtectionScope.CurrentUser);
return Convert.ToBase64String(protectedPassword); //then I write this to a file
謝謝!
這也許可以解釋你的情況:http://support.microsoft.com/kb/309408#4 – Toby 2010-06-28 18:14:25
難道他們都在同一個*域中運行*帳戶,或者他們根據該恰好有本地戶口相同的用戶名和密碼? – 2011-10-14 00:16:45