Программа "Генератор хешей" - Pascal

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

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

Здравствуйте. Хочу сделать программу-генератор хешей по алгоритму sha224. Необходимо, чтобы можно было задать диапазон значений (шифруются числовые значения с 31 символом), каждому элементу которого подбирается соответствующее значение хеша с сохранением значений в формате число:хеш. Возможно это реализовать или может есть какие-то готовые решения? Для примера: Задаём диапазон значений от 0.000000000000000000000000000001 до 0.60000000000000000000000000000. Для каждого значения из этого диапазона подобрать хеш по sha224.

Решение задачи: «Программа "Генератор хешей"»

textual
Листинг программы
  1. program HashCalc;
  2.  
  3. {$mode delphi}
  4.  
  5. uses
  6.   SysUtils,
  7.   tfTypes,
  8.   tfBytes,
  9.   tfHashes;
  10.  
  11. procedure CalcHash(const s: string);
  12. const
  13.   BufSize = 32;
  14.  
  15. var
  16.   HashName: string='SHA224';
  17.   HashArr: THash;
  18.   Buffer: array[0 .. BufSize - 1] of Byte;
  19.   L: Integer;
  20.  
  21. begin
  22.   HashArr:= THash(HashName);
  23.   for L:=1 to 32 do Buffer[L-1]:=ord(s[L]);
  24.   HashArr.Update(Buffer, BufSize);
  25.   Writeln(s, ':  ', HashArr.Digest.ToHex);
  26. end;
  27.  
  28. var
  29.   s1:string;
  30.   s2:string;
  31.   fout:string;
  32.   i:integer;
  33. begin
  34.   write('Start:');readln(s1);
  35.   if s1='' then s1:='0.000000000000000000000000000001';
  36.   write('Finish:');readln(s2);
  37.   if s2='' then s2:='0.600000000000000000000000000000';
  38.   write('Output file name:');readln(fout);
  39.   assignfile(output,fout);
  40.   rewrite(output);
  41.   repeat
  42.     CalcHash(s1);
  43.     s1[length(s1)]:=chr(ord(s1[length(s1)])+1);
  44.     for i:=length(s1) downto 3 do
  45.       if s1[i]>'9' then begin s1[i-1]:=chr(ord(s1[i-1])+1);s1[i]:='0';end;
  46.   until s1>s2;
  47.   close(output);
  48. end.

Объяснение кода листинга программы

  1. На строке 16 объявляется переменная HashName типа string и ей присваивается значение SHA224, которое представляет название алгоритма хеширования.
  2. На строке 17 объявляется переменная HashArr типа THash и инициализируется значением THash(HashName), чтобы определить тип хеш-функции.
  3. На строке 18 объявляется массив Buffer размером 32 байта для буфера хранения данных.
  4. На строке 19 объявляется переменная L типа Integer для использования в цикле.
  5. Начиная с 21 строки начинается процедура CalcHash, которая принимает на вход строку s для хеширования.
  6. Внутри процедуры значение переменной HashName используется для инициализации HashArr алгоритмом хеширования.
  7. Затем создается цикл, который перебирает первые 32 символа строки s и записывает их байтовые значения в массив Buffer.
  8. После этого вызывается метод Update объекта HashArr для обновления и вычисления хеша на основе данных из буфера.
  9. Полученное значение хеша выводится на экран с помощью процедуры Writeln на строке 24.
  10. На строке 26 объявляются переменные s1, s2 и fout для хранения вводимых имен файлов и значений.
  11. На строке 29 открывается файл с именем, заданным пользователем.
  12. Затем начинается цикл, который вызывает процедуру CalcHash для каждой строки от s1 до s2 и увеличивает значение s1 в цикле с помощью инкремента.
  13. Цикл заканчивается, когда s1 превышает значение s2.
  14. На строке 39 закрывается файл после завершения работы программы.

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


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

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

10   голосов , оценка 4.3 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы