#winapi #encryption #storage #dpapi
#winapi #шифрование #Хранение #dpapi
Вопрос:
DPAPI имеет 2 функции: CryptUnprotectData
и CryptProtectData
.
Я прочитал They do the encryption or decryption by using a session key that the function creates by using the user's logon credentials.
, означает ли это, что мне не нужно хранить этот ключ где угодно, и они будут созданы, когда я захочу зашифровать или расшифровать данные?
Также я обнаружил An important point to remember is that DPAPI merely applies cryptographic protection to the data. It does not store any of the protected data; therefore applications calling DPAPI must implement their own storage of the protected data.
, что это связано с ключом или файлом, который был зашифрован?
Ответ №1:
Упомянутые функции используют ключ, специфичный для вошедшего в систему пользователя. Таким образом, вам не нужно хранить ключ. Однако эти функции предназначены только для преобразования данных, а не для хранения данных. Это означает, что ваша задача — хранить зашифрованный фрагмент данных там, где вы хотите — CryptProtectData не сделает этого за вас.
Комментарии:
1. Спасибо. Это то, что мне было нужно. Но у меня есть еще несколько вопросов. Нужно ли хранить ключ для CryptEncrypt и CryptDecrypt? И есть ли в WIN API функции для хранения этого ключа, если мне нужно его сохранить?
2. @user3186861 Ключ получен из учетных данных пользователя текущей учетной записи пользователя. Это означает, что (а) вам не нужно хранить ключ и (б) если учетная запись пользователя потеряна, то и данные тоже, потому что ключ исчезнет вместе с учетной записью пользователя. Я не знаю никаких способов резервного копирования ключа.
3. Используют ли CryptEncrypt и CryptDecrypt учетные записи пользователей, такие как CryptUnprotectData и CryptProtectData?
4. Я думал , что CryptEncrypt и
CryptDecrypt
использовать ключ, созданный CryptGenKey . Хранит ли CryptExportKey созданныйCryptGenKey
ключ в базе данных ключей CSP? Или мне нужен ключ хранения для шифрования самому?