.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];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д