C++ 会话密钥-MSDN-Microsoft

C++ 会话密钥-MSDN-Microsoft,c++,encryption,msdn,C++,Encryption,Msdn,我正在开发一个应用程序,通过使用cryptEncryptEncrypt()对文件进行加密并使用会话密钥来保护文件 我不知道它在说什么。这是否意味着,如果其他人将我的加密文件带到另一台机器(或在同一台机器上但不同的用户),即使他有密码也无法解密 有谁能帮我澄清一下他的观点吗 提前感谢您抽出时间 这意味着如果其他人把我的加密文件带到另一个 无法解密计算机(或在同一计算机上但不同的用户) 他连密码都有吗 不, 通常通过生成与密码短语匹配的哈希来生成加密和解密的会话密钥: // Hash in the

我正在开发一个应用程序,通过使用
cryptEncryptEncrypt()
对文件进行加密并使用会话密钥来保护文件 我不知道它在说什么。这是否意味着,如果其他人将我的加密文件带到另一台机器(或在同一台机器上但不同的用户),即使他有密码也无法解密

有谁能帮我澄清一下他的观点吗

提前感谢您抽出时间

这意味着如果其他人把我的加密文件带到另一个 无法解密计算机(或在同一计算机上但不同的用户) 他连密码都有吗

不,

通常通过生成与密码短语匹配的哈希来生成加密和解密的会话密钥:

// 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)
或者


谢谢@Benj,好的会话密钥应该是相同的,我的问题是:如果用户或机器不同,它将是相同的密钥?是的,它与用户/计算机无关。好的@Benj我想是的,谢谢你的帮助。
CryptDecrypt( m_hKey, 0, bEOF, 0, m_pBlockBuffer, &dwCount)