2013-06-02 1 views
1

Как дешифровать строку, зашифрованную с помощью функции ниже?Как я могу расшифровать строку функций с помощью Rfc2898DeriveBytes?

private static byte[] salt = new byte[] { 23, 21, 32, 33, 46, 59, 60, 74 }; 
private static int iterations = 1000; 
private static int cb = 32; 

public static string GetEncrypt(string plainText) 
{ 
    Rfc2898DeriveBytes k = new Rfc2898DeriveBytes(plainText, salt, iterations); 
    byte[] data = k.GetBytes(cb); 
    return Convert.ToBase64String(data); 
} 
+0

в качестве примечания: постоянная не является подходящей солью. Соль должна быть разной для каждого производного ключа. – CodesInChaos

ответ

7

Вы не можете. Вы неправильно поняли цель Rfc2898DeriveBytes. Он не должен быть обратимым алгоритмом шифрования - это просто способ получить ключ , который затем используется в другом алгоритме шифрования.

Идея состоит в том, что вы запрашиваете пароль, конвертируете его (с солью) в ключ шифрования и используете этот ключ для шифрования данных (например, с помощью TripleDES).

После этого вы снова запрашиваете пароль, используйте ту же соль для создания одного и того же ключа, а затем вы можете использовать это для дешифрования зашифрованных данных.

Прочтите RFC 2898 для получения дополнительной информации.

+0

Привет, Jon Спасибо за ответ. Можете ли вы привести пример, если вы можете так же, как я не очень хорошо знаю криптографию? –

+0

@TusharMaru: Есть пример, если вы читаете документацию для 'Rfc2898DeriveBytes' –

+0

Я не мог найти, можете ли вы мне помочь? –

Смежные вопросы