Шифрование DataProtectionScope.CurrentUser не работает на разных компьютерах. - PullRequest
6 голосов
/ 28 июня 2010

Я пытаюсь зашифровать и расшифровать некоторые данные текстового файла, используя метод .NET ProtectedData.Protect.Я хотел бы иметь возможность зашифровать текст (и сохранить его в файл) на одном компьютере и расшифровать текст на другом компьютере.Машины находятся в одном и том же домене и работают под одной и той же службой под одним и тем же именем пользователя, поэтому я подумал, что использование DataProtectionScope.CurrentUser позволит любой службе зашифровать и расшифровать файл.

Когда служба номер два пытается расшифроватьфайл, он выдает «ключ недопустим для использования в указанном состоянии».Другие сайты предполагают, что такого рода проблемы возникают, когда олицетворение выполняется неправильно, но нет олицетворения.Обе службы работают под одной учетной записью AD.Мне кажется, что службы используют разные ключи для шифрования данных, но я не знаю, почему это происходит, поскольку они работают под одной учетной записью.

Кто-нибудь еще сталкивался с такой проблемой?

Код, который я использую для шифрования и дешифрования, в основном:

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

Спасибо!

1 Ответ

1 голос
/ 12 апреля 2016

У пользователя должен быть перемещаемый профиль.

В документации по Windows API под функцией DPAPI, Функция CryptProtectData , есть этот комментарий:

... расшифровка обычно может быть выполнена только на компьютере, где данные были зашифрованы.Однако пользователь с перемещаемым профилем может расшифровать данные с другого компьютера в сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...