我正在开发一个应用程序,该应用程序通过使用会话密钥对其进行加密CryptEncrypt()
和使用会话密钥来保护文件,从文档
中我无法找出它正在谈论的会话。这是否意味着如果其他人将我的加密文件带到另一台机器(或在同一台机器上但不同的用户)即使他有密码也无法解密它?
任何人都可以帮助我澄清他的观点。
在此先感谢您的时间。
我正在开发一个应用程序,该应用程序通过使用会话密钥对其进行加密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)