.NET 4.x Хеш-функция - преобразовать массив в шестнадцатибитное число - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте,задача: на входе байт массив(из любого файла),нужно высчитать хеш функцию(алгоритм формирования побитовое исключение ИЛИ пар байт исходного сообщения,размер хеш-функции 16 бит).Побитовое исключение сделал.Вопрос как дальше преобразовать данный массив в 16 битное число или какой шаг нужно добавить?и нужно ли что-то делать с длиной массива при чтении?
FileStream file = new FileStream(file_to_encript,FileMode.Open,FileAccess.Read);
            int len = file_to_encript.Length;
            byte[] buf = new byte[len];
            int r = -1;
            while( r !=0)
            {
                r = file.Read(buf, 0, buf.Length);
            }
            int k=0,m=1,n=0;
            int temp, tempI;
            for(int i =0;i<buf.Length-1;i++)
            {
                if (m > buf.Length) break;
                temp = buf[(k)];
                tempI=buf[(m)];
                
               for(int j =0; j<1;j++)
                {
                    temp = temp ^ tempI;
                    buf[i] = Convert.ToByte(temp);
                }
               k++;
               m++;
              
            }

Решение задачи: «.NET 4.x Хеш-функция - преобразовать массив в шестнадцатибитное число»

textual
Листинг программы
ushort hash = 0;
int evenLength = (buf.Length/2)*2;
for (int i=0; i<evenLength; i+=2)
{
    hash ^= (ushort)(buf[i] + buf[i+1]<<8);
}
if (buf.Length % 2 == 1) hash ^= buf[buf.Length-1];

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5
Похожие ответы