Как MD5 Hash, Key и IV используются для расшифровки файлов с использованием TripleDES в C #? - PullRequest
0 голосов
/ 02 июля 2019

Я пытался понять это.Предыстория: кто-то дал мне зашифрованный файл.Он сказал мне ключ, хэш 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 больше не безопасны, и я не должен использовать этот метод в будущем.Я не сделал этого звонка.Мне просто нужно решить эту проблему, используя предоставленное мне шифрование.

...