Я работаю над приложением, которое защищает файлы с помощью шифрования CryptEncrypt()
и использовать ключ сеанса, из документация
Я не могу узнать, о каком сеансе идет речь. Значит ли это, что если кто-то другой перенесет мой зашифрованный файл на другой компьютер (или на тот же компьютер, но с другим пользователем), он не сможет расшифровать его, даже если у него есть пароль?
Может ли кто-нибудь помочь мне прояснить свою точку зрения, пожалуйста.
Спасибо заранее за ваше время.
Значит ли это, что если кто-то другой перенесет мой зашифрованный файл в другой?
Машина (или на той же машине, но другой пользователь) не может быть расшифрована
это даже у него есть пароль?
Нет,
Обычно генерируется сеансовый ключ как для шифрования, так и для дешифрования путем генерации хеша, который соответствует парольной фразе:
// Hash in the password data.
if(!CryptHashData( m_hHash, (BYTE *) m_strPassphrase.c_str(), (DWORD) m_strPassphrase.length(), 0))
{
// ...
}
// Derive a session key from the hash object.
if(!CryptDeriveKey( m_hCryptProv, ENCRYPT_ALGORITHM, m_hHash, KEYLENGTH, &m_hKey))
{
//...
}
m_hKey
Теперь можно использовать для шифрования / дешифрования.
CryptEncrypt( m_hKey, NULL, bEOF, 0, m_pBlockBuffer, &dwCount, m_dwBufferLen)
или же ..
CryptDecrypt( m_hKey, 0, bEOF, 0, m_pBlockBuffer, &dwCount)
Других решений пока нет …