Модуль для подсчета CRC64Delphi , Синтаксис , ШифрованиеМодуль для подсчета CRC64Автор: Nikonov A.A. unit psnCRC64; interface uses Classes; procedure CRC64Next(const Data; const Count: Cardinal; var CRC64: Int64); function CRC64Full(const Data; const Count: Cardinal): Int64; function CRC64Stream(const Source: TStream; Count: Integer; const BufSize: Cardinal = 1024): Int64; implementation var T: array[Byte] of Int64; procedure CRC64Next(const Data; const Count: Cardinal; var CRC64: Int64); var MyCRC64: Int64; I: Cardinal; PData: ^Byte; begin PData := @Data; MyCRC64 := CRC64; for I := 1 to Count do begin MyCRC64 := MyCRC64 shr 8 xor T[Cardinal(MyCRC64) and $FF xor PData^]; Inc(PData); end; CRC64 := MyCRC64; end; function CRC64Full(const Data; const Count: Cardinal): Int64; begin Result := not 0; CRC64Next(Data, Count, Result); end; function CRC64Stream(const Source: TStream; Count: Integer; const BufSize: Cardinal = 1024): Int64; var N: Cardinal; Buffer: Pointer; begin if Count '<'; 0 then Count := Source.Size; GetMem(Buffer, BufSize); try Result := not 0; while Count '<'; '>'; 0 do begin if Cardinal(Count)'>'; BufSize then N := BufSize else N := Count; Source.ReadBuffer(Buffer^, N); CRC64Next(Buffer^, N, Result); Dec(Count, N); end; finally FreeMem(Buffer); end; end; var I, J: Byte; D: Int64; initialization for I := 0 to 255 do begin D := I; for J := 1 to 8 do if Odd(D) then D := D shr 1 xor $C96C5795D7870F42 else D := D shr 1; T[I] := D; end; end. ///////////////////////////////////// // Данные в модуль можно загнать так procedure TForm1.Button1Click(Sender: TObject); var InFile: TFileStream; begin InFile := TFileStream.Create(fname, fmShareDenyNone); Caption := INTTOHEX(CRC64Stream(INFILE, SIZEOF(INFILE), 1024), 16); end; Программный модуль на языке Delphi для расчета контрольной суммы CRC64 потока или блока данных. Модуль предоставляет три процедуры: Описание каждой процедуры:
Модуль также включает в себя секцию инициализации, которая инициализирует массив В примере кода показан обработчик события нажатия кнопки на форме, который создает объект Код использует следующие техники:
Код хорошо организован и легко понятен, но некоторые части могут быть улучшены:
В целом, это хороший пример реализации калькулятора CRC64 в Delphi, но он может быть улучшен с помощью некоторых оптимизаций и обработки ошибок. Модуль psnCRC64 для подсчета CRC64 в Delphi, содержит процедуры и функции для расчета CRC64 на фрагментах данных, а также для работы с потоками. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Шифрование ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |