Вы можете использовать следующие методы .NET Framework для защиты ваших данных, они используют DPAPI для внутренней защиты ваших данных, и вы можете напрямую использовать их в C # или VB.NET без необходимости возиться с системными вызовами DLL:
namespace System.Security.Cryptography
{
// Summary:
// Provides methods for protecting and unprotecting data. This class cannot
// be inherited.
public sealed class ProtectedData
{
public static byte[] Protect(byte[] userData,
byte[] optionalEntropy, DataProtectionScope scope);
public static byte[] Unprotect(byte[] encryptedData,
byte[] optionalEntropy, DataProtectionScope scope);
}
}
Чтобы использовать его, добавьте ссылку System.Security
в ваш проект. Я настоятельно рекомендую использовать байтовый массив optionalEntropy
для добавления SALT к вашим защищенным данным (добавьте несколько случайных значений в байтовый массив, которые являются уникальными для данных, которые вы собираетесь защищать).
Для scope
вы можете использовать DataProtectionScope.CurrentUser
, который будет шифровать данные для защиты с учетными данными текущего пользователя.
В некоторых сценариях DataProtectionScope.LocalMachine
также полезен. В этом случае защищенные данные связаны с машинным контекстом. С этой настройкой любой процесс, запущенный на компьютере, может снять защиту данных. Обычно он используется в серверных приложениях, работающих на сервере, где недоверенным пользователям запрещен доступ.
Используйте метод Protect
для шифрования данных, расшифруйте их с помощью Unprotect
. Вы можете хранить возвращенный байтовый массив в соответствии с требованиями вашего приложения (файл, база данных, реестр и т. Д.).
Подробнее об этих методах можно узнать здесь, на MSDN:
Для примеров кода и в случае, если вы заинтересованы в шифровании частей файла .config приложений, проверьте это:
Я рекомендую вам использовать СОЛЬ (т.е. с помощью параметра optionalEntropy
) - он защищает от атак радужного стола.
Есть один недостаток решения DPAPI, о котором я хотел бы упомянуть: ключ генерируется на основе ваших учетных данных Windows, что означает, что тот, кто имеет доступ к вашим учетным данным Windows, может иметь доступ к защищенным данным. Программа, работающая под вашей учетной записью, также может получить доступ к защищенным данным.