2014-04-21 34 views

回答

1

CryptProtectData使用加密算法從環境變量(如當前機器ID和用戶憑證)派生出其密鑰。這也意味着你在大多數情況下需要成爲加密用戶才能解密。

然而,有一個小警告,你可以繞過用戶憑證進入密鑰的組成;但遺憾的是你可以做的最好的事情是加密一些可以被任何用戶加密的東西同一臺機器

作爲呈現here,可以設置dwFlags中爲「CRYPTPROTECT_LOCAL_MACHINE」(dwFlags中被枚舉,則可以簡單地將其設置爲UINT 0)。 當你在加密的東西上調用CryptUnprotectData時,確保也將dwFlags設置爲uint(0),並且這兩個函數將完全對稱並且彼此協作。我親自嘗試過這一點,可以證明它有效。

是的,這整個需要相同的機器系統變得非常煩人,但它是迄今爲止最安全的加密方式,並確保世界上沒有其他計算機可以解密它。

希望這會有幫助, 納什灣。

+0

pssh,所以程序所要做的就是在用戶的上下文中運行,它將能夠解密給定散列的密碼? – pythonian29033

0

CryptProtectData可以使用CRYPTPROTECT_LOCAL_MACHINE標誌,但這意味着任何用戶都會解密。使用CRYPTPROTECT_LOCAL_MACHINE基本上不會保護用戶級別的任何內容,它只是在機器級別保護數據(即使如此,具有漫遊配置文件的用戶也可以解密)。 如果您需要使用密碼保護某些內容,請考慮使用CryptGenKey和CryptEncrypt函數(提供在頁面底部的樣本用於加密和解密文件)。