Data Protection API (DPAPI) в C# предоставляет встроенные механизмы для шифрования и защиты данных. В .NET Core и .NET 5+ используется Microsoft.AspNetCore.DataProtection, обеспечивающий удобный способ хранения и управления зашифрованными данными.
Основные возможности Data Protection API
- Шифрование и расшифровка данных — защита конфиденциальной информации.
- Хранилище ключей — управление ключами шифрования с возможностью сохранения в файловой системе, реестре Windows или внешних хранилищах.
- Защита временных данных — использование временных токенов и других методов контроля доступа.
Установка Data Protection API
Data Protection API доступен в пакете Microsoft.AspNetCore.DataProtection, который можно добавить через NuGet:
dotnet add package Microsoft.AspNetCore.DataProtection
Использование Data Protection API
Пример шифрования и расшифровки данных с использованием IDataProtector
:
using Microsoft.AspNetCore.DataProtection;
using System;
var provider = DataProtectionProvider.Create("SampleApp");
var protector = provider.CreateProtector("MySecretKey");
string protectedData = protector.Protect("Конфиденциальные данные");
string unprotectedData = protector.Unprotect(protectedData);
Console.WriteLine($"Зашифрованные данные: {protectedData}");
Console.WriteLine($"Расшифрованные данные: {unprotectedData}");
Настройка хранилища ключей
Data Protection API позволяет настраивать хранилище ключей в различных источниках:
- Файловая система — для постоянного хранения ключей между перезапусками приложения.
- Реестр Windows — надёжное хранилище для серверных приложений.
- Azure Key Vault — защита ключей в облачном хранилище.
Пример настройки хранилища ключей в файловой системе:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(@"C:\Keys"))
.SetApplicationName("MyApp");
var app = builder.Build();
app.Run();
Использование Data Protection API в ASP.NET Core
Data Protection API интегрирован в ASP.NET Core и автоматически используется для защиты аутентификационных токенов, cookie-файлов и других конфиденциальных данных.
Добавление защиты данных в Startup.cs
:
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(@"C:\Keys"))
.SetApplicationName("MySecureApp");
Data Protection API предоставляет мощные инструменты для защиты данных в C#-приложениях, обеспечивая безопасное хранение и передачу конфиденциальной информации.