Я пытался понять это.Предыстория: кто-то дал мне зашифрованный файл.Он сказал мне ключ, хэш MD5, заполнение и режим.Он зашифровал его на Java, используя экземпляр SecretKeySpec "DESede".Я пытаюсь расшифровать файл в C #.
FBArr - это 24-байтовый ключ.P1 = file.readallbytes (путь)
string plaintext = "";
using (TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider())
{
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;
MD5CryptoServiceProvider MD5b = new MD5CryptoServiceProvider();
ICryptoTransform decryptor = tdes.CreateDecryptor(FBArr, FBArr);
using (MemoryStream ms = new MemoryStream(p1))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (StreamReader reader = new StreamReader(cs))
plaintext = reader.ReadToEnd();
}
}
}
Как видно из кода, переменная MD5b ничего не делает.Кроме того, IV просто установлен именно на ключ.Даже с этими несоответствиями, я могу расшифровать половину моего файла.Мне нужно расшифровать оставшуюся часть файла.
Мой вопрос: Как хэш MD5 и IV используются для помощи в расшифровке?
Я думаю, что фактто, что я не использую свой MD5 Hash, является причиной того, что мой ключ не полностью расшифровывает весь файл. Я полностью понимаю, что MD5 и TripleDES больше не безопасны, и я не должен использовать этот метод в будущем.Я не сделал этого звонка.Мне просто нужно решить эту проблему, используя предоставленное мне шифрование.