2012-10-05 115 views
0

我正在使用CryptEncrypt()进行加密并使用会话密钥来保护文件,从documentation 我无法找到它正在讨论的会话。这是否意味着,如果其他人将我的加密文件带到另一台机器(或在同一台机器上但不同的用户)不能解密它,即使他有密码?会话密钥 - MSDN - 微软

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

提前感谢您的时间。

回答

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) 
+0

谢谢@Benj,确定会话密钥应该是两个相同的,我的问题是:这将是相同的密钥,如果用户或机器是不同的? – Oumaya

+0

是的,它没有绑定到用户/计算机。 – Benj

+0

好@Benj我认为这是,谢谢任何方式,我感谢您的帮助。 – Oumaya