Шифрование / дешифрование с использованием DataProtection.DataProtector C#
Мне нужно расшифровать соединение, созданное изначально под учетной записью, которая больше не доступна.
Для этого я сделал простое приложение:
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);
}
}
Теперь я заметил, что когда я делаю тест на своем компьютере и пытаюсь расшифровать зашифрованный результат на другом компьютере, я получаю:
Исключение расшифровки. Расшифровка не удалась. Ключ недействителен для использования в определенном состоянии.
Затем я провел небольшое исследование и выяснил это:
Вы экспортировали ключ с одного сервера на другой, чтобы они были настроены одинаково? Если нет, вы используете несовпадающие ключи, что приведет к ошибке шифрования / дешифрования.
и я могу найти ключи здесь:
Как получить значение ключа проверки и значение ключа дешифрования?
ключ дешифрования можно найти в "D:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys"
поэтому мой вопрос: если я экспортирую ключи в этом месте со своего компьютера, будет ли работать тот, который я хочу расшифровать? а под экспортом имеется ввиду просто скопировать ключевые файлы или сделать другую операцию?
1 ответ
AFAIK это невозможно - и ни в коем случае не желательно. DPAPI регулярно создает новые ключи, поэтому даже если вы сможете скопировать ключи между компьютерами, они через некоторое время устареют.
Если вы хотите расшифровать данные на более чем одном компьютере, используйте другой метод, например, RSA.