会话密钥 - MSDN - Microsoft

时间:2012-10-05 13:37:34

标签: c++ encryption msdn

我正在开发一个应用程序来保护文件,方法是使用CryptEncrypt()对文件进行加密,然后使用来自documentation 的会话密钥 我无法找出它正在讨论的会话。这是否意味着如果其他人将我的加密文件带到另一台机器(或在同一台机器上但不同的用户),即使他有密码也无法解密它?

任何人都可以帮我澄清他的观点。

提前感谢您的时间。

1 个答案:

答案 0 :(得分:2)

  

这是否意味着如果其他人将我的加密文件带到另一个人   机器(或在同一台机器上,但不同的用户)无法解密   它甚至还有密码?

没有

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

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