我們有一個加密/解密的數據爲DataProtectionScope.LocalMachine
的應用程序。我們現在不得不將範圍更改爲DataProtectionScope.CurrentUser
。數據保護API範圍:LOCALMACHINE&CurrentUser
當範圍更改爲CurrentUser
時,假設當然用戶登錄到同一臺計算機上,那麼在LocalMachine
作用域下加密的現有字符串是否仍然可讀?
編輯:我已經寫了一個非常快的&骯髒的測試應用程序。奇怪的是,在同一臺計算機上,我可以通過LocalMachine & CurrentUser作用域來解密在LocalMachine或CurrentUser作用域下加密的字符串。這聽起來不像正確的行爲,幫助!
private void btnUserEncrypt_Click(object sender, EventArgs e)
{
//encrypt data
var data = Encoding.Unicode.GetBytes(txtUserEncrypt.Text);
byte[] encrypted = ProtectedData.Protect(data, null, DataProtectionScope.CurrentUser);
txtUserEncrypt.Text = Convert.ToBase64String(encrypted);
}
private void btnUserDecrypt_Click(object sender, EventArgs e)
{
byte[] data = Convert.FromBase64String(txtUserDecrypt.Text);
//decrypt data
byte[] decrypted = ProtectedData.Unprotect(data, null, DataProtectionScope.CurrentUser);
txtUserDecrypt.Text = Encoding.Unicode.GetString(decrypted);
}
private void btnMachineEncrypt_Click(object sender, EventArgs e)
{
//encrypt data
var data = Encoding.Unicode.GetBytes(txtMachineEncrypt.Text);
byte[] encrypted = ProtectedData.Protect(data, null, DataProtectionScope.LocalMachine);
txtMachineEncrypt.Text = Convert.ToBase64String(encrypted);
}
private void btnMachineDecrypt_Click(object sender, EventArgs e)
{
byte[] data = Convert.FromBase64String(txtMachineDecrypt.Text);
//decrypt data
byte[] decrypted = ProtectedData.Unprotect(data, null, DataProtectionScope.LocalMachine);
txtMachineDecrypt.Text = Encoding.Unicode.GetString(decrypted);
}
@Alex戴維斯什麼參數涉及加密在本地機器範圍的數據?密碼不參與?使用反向工具破解局部機器人斑點有多容易?請諮詢 – techno
@techno:參數在CryptProtectData和CryptUnprotectData的API定義中描述。請參閱http://www.obviex.com/samples/dpapi.aspx上的示例。我不確定哪個密碼(密碼)用於密鑰,可能是由LSA保護的一些值。通過在機器上運行惡意程序,本地機器選項比逆向工程更容易中斷(我在這裏推測)。一般來說,我不推薦使用機器範圍。 –
感謝您reply.Im不找failproof mechanism.I想就算我使用本機的範圍,它會採取的技術技能,良好的金額獲得的secret.Plus添加額外的熵我會用已知的祕密只有應用程序。你覺得怎麼樣? – techno