C# 使用DataProtection.DataProtector c加密/解密#
我需要解密最初在不再可用的帐户下创建的连接 为此,我制作了一个简单的应用程序:C# 使用DataProtection.DataProtector c加密/解密#,c#,encryption,data-protection,C#,Encryption,Data Protection,我需要解密最初在不再可用的帐户下创建的连接 为此,我制作了一个简单的应用程序: private void btnEncrypt_Click(object sender, EventArgs e) { DataProtection.DataProtector dp = new DataProtection.DataProtector(DataProtection.DataProtector.Store.USE_MACHINE_STORE);
private void btnEncrypt_Click(object sender, EventArgs e)
{
DataProtection.DataProtector dp = new DataProtection.DataProtector(DataProtection.DataProtector.Store.USE_MACHINE_STORE);
try
{
byte[] dbToEncrypt = Encoding.ASCII.GetBytes(txtText.Text);
string resultEncrypted = Convert.ToBase64String(dp.Encrypt(dbToEncrypt, null));
txtEncrypt.Text = resultEncrypted;
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
private void btnDecrypt_Click(object sender, EventArgs e)
{
DataProtection.DataProtector dp = new DataProtection.DataProtector(DataProtection.DataProtector.Store.USE_MACHINE_STORE);
try
{
byte[] dbToDecrypt = Convert.FromBase64String(txtEncrypt.Text);
string resultDecrypted = Encoding.ASCII.GetString(dp.Decrypt(dbToDecrypt, null));
txtDecrypt.Text = resultDecrypted;
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
}
现在,我注意到,当我在我的计算机上进行测试,并尝试在另一台计算机上解密加密结果时,我得到:
异常解密。解密失败。密钥无效,无法在中使用
特定状态
然后,我做了一些研究,发现:
您是否将密钥从一台服务器导出到另一台服务器,以便它们都是安全的
设置相同的?如果不是,则使用不匹配的键,这将
导致加密/解密错误
我可以在这里找到钥匙:
如何获取validationkey值和decryptionkey值
解密密钥可在“D:\Documents and Settings\All”中找到
用户\应用程序数据\ Microsoft\Crypto\RSA\MachineKeys“
所以我的问题是:如果我从我的计算机中导出该位置的密钥,我想要解密数据的那个密钥会起作用吗?导出意味着只需复制关键文件或执行其他操作?AFAIK这是不可能的,而且在任何情况下都是不可取的。DPAPI定期创建新密钥,因此即使您可以在机器之间复制密钥,它们也会在一段时间后过时
如果要在多台计算机上解密数据,请使用不同的方法,例如RSA。AFAIK这是不可能的,而且在任何情况下都不可取。DPAPI定期创建新密钥,因此即使您可以在机器之间复制密钥,它们也会在一段时间后过时 如果要在多台计算机上解密数据,请使用其他方法,例如RSA