как преобразовать в файл Byte, возвращенный ComputeHash - PullRequest
0 голосов
/ 20 апреля 2010

на выходе всегда 1 кб файл. Как я могу успешно записать преобразовать байт, возвращенный ComputeHash в файл .?

MD5CryptoServiceProvider test = new MD5CryptoServiceProvider ();

            using (FileStream fs = new FileStream(@"D:\test.pdf", FileMode.Open, FileAccess.Read))
            {

                byte[] buffer = test.ComputeHash(fs);
                File.WriteAllBytes(@"D:\test3.pdf", buffer);
            }

Ответы [ 3 ]

0 голосов
/ 20 апреля 2010

Я предполагаю, что вы имеете в виду: у меня есть файл 1 КБ, как я могу перейти от этого файла 1 КБ к новому файлу?

Хэш необратим. Самое близкое к «обращению» хеша - это взгляд на радужный стол.

Если вы себе это представляете, допустим, что строка длиной 100 символов передается хэш-функции, которая возвращает символ [32] ... Ваш вход имеет 255 ^ 100 различных возможностей, а возвращаемое значение - 255 ^ 32. возможности возврата. Очевидно, будут возникать коллизии [количество входов> количество выходов]

0 голосов
/ 20 апреля 2010

Я не уверен, что полностью понимаю, что вы ищете, но может ли это быть?

using(MD5CryptoServiceProvider test = new MD5CryptoServiceProvider())
{

    byte[] buffer = test.ComputeHash(File.ReadAllBytes(@"D:\test3.pdf"));
    File.WriteAllBytes(@"D:\test3.dat", buffer); // PDF would be pointless here
}

Помните, однако, что хеш не обратим, и вы не можете сделать из него ничего, кроме потока байтов. Если вы хотите изменить поведение безопасности, используйте encryption .

0 голосов
/ 20 апреля 2010

Результат всегда одинаков, поскольку хэш MD5 всегда имеет одинаковую длину. Также, учитывая хэш, вы не можете получить исходное значение (ну, вы всегда можете попробовать его взломать), это и есть цель хэша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...