2012-10-05 113 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