我正在开发一个应用程序,它通过使用CryptEncrypt()加密文件并使用会话密钥来保护文件,从documentation 中我找不到它在谈论什么会话。这是不是意味着如果有人将我的加密文件带到另一台机器上(或在同一台机器上,但不同的用户),即使他有密码也无法解密?
有人能帮我澄清一下他的观点吗?
提前感谢您的宝贵时间。
发布于 2012-10-05 21:43:38
是不是说,如果其他人把我的加密文件带到另一台机器上(或者在同一台机器上,但不同的用户),即使他有密码也不能解密?
不,
通常通过生成与密码短语匹配的散列来生成用于加密和解密的会话密钥:
// 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)https://stackoverflow.com/questions/12747481
复制相似问题