Я работаю над кодом, который в идеале может зашифровать файл с помощью Windows DPAPI.Это нормально, если файл можно прочитать непосредственно в память, но если это невозможно, я не могу зашифровать его.ProtectedData.Protect
принимает 3 аргумента - данные в виде байтового массива, необязательную энтропию в виде байтового массива и область видимости.
Когда я использую его, как показано ниже, он дает 2 разных результата:
var data = new byte[]{1, 2, 3, 4, 5, 6, 7, 8};
byte[] encryptedDataA = ProtectedData.Protect(data, null, DataProtectionScope.CurrentUser);
byte[] encryptedDataB = ProtectedData.Protect(data, null, DataProtectionScope.CurrentUser);
Console.WriteLine(encryptedDataA.SequenceEqual(encryptedDataB));
// False!!!!
Задание идентичной энтропии также приводит к различным результатам. Здесь - это ответ MSDN, подтверждающий это.Тем не менее, нет никакой документации, которую я могу найти, детализируя заголовок или как его читать.
Поскольку нет никаких перегрузок, принимающих его как что-либо, кроме byte[]
, я не могу найти способ исправить это, чтобы позволитьдля шифрования больших файлов без уродливой порции данных.
Есть ли способ обойти это?