Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pascalvault/lazarus_hashing
Checksum & Hashing library for Lazarus
https://github.com/pascalvault/lazarus_hashing
crc crc-16 crc-32 crc-8 crc-algorithms crc-calculation crc16 crc32 crc64 crc8 hash hashing hashing-algorithm hashing-library md5 md5-hash md5hashing sha1 sha256
Last synced: 11 days ago
JSON representation
Checksum & Hashing library for Lazarus
- Host: GitHub
- URL: https://github.com/pascalvault/lazarus_hashing
- Owner: PascalVault
- License: mit
- Created: 2022-11-17T15:12:20.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-09T09:51:06.000Z (over 1 year ago)
- Last Synced: 2023-10-09T10:47:46.273Z (over 1 year ago)
- Topics: crc, crc-16, crc-32, crc-8, crc-algorithms, crc-calculation, crc16, crc32, crc64, crc8, hash, hashing, hashing-algorithm, hashing-library, md5, md5-hash, md5hashing, sha1, sha256
- Language: Pascal
- Homepage:
- Size: 356 KB
- Stars: 14
- Watchers: 3
- Forks: 2
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Checksum & Hashing library for Lazarus
The goal is the create a library which is modular, fast and portable. There is no platform-specific code, no Assembly, no includes, no conditinal defines. Every algorith has it's own separate file and if you need just one algorithm in your program you can just copy 2 files- the file with the algorithm you need and "HasherBase.pas". Optionally you can copy "Hasher.pas" but that's just a helper class.
## Available algorithms
More soon...
* CRC-4 interlaken,
* CRC-6 DARC, CRC-6 G704,
* CRC-7 mmc, CRC-7 umts,
* CRC-8 AUTOSAR, CRC-8 BLUETOOTH, CRC-8 CDMA2000, CRC-8 DARC, CRC-8 DVBS2, CRC-8 GSMA, CRC-8 GSMB, CRC-8 HITAG, CRC-8 I4321, CRC-8 ICODE, CRC-8 LTE, CRC-8 MAXIMDOW, CRC-8 MIFAREMAD, CRC-8 NRSC5, CRC-8 OPENSAFETY, CRC-8 ROHC, CRC-8 SAEJ1850, CRC-8 SMBUS, CRC-8 TECH3250, CRC-8 WCDMA,
* CRC-10 atm, CRC-10 gsm, CRC-10 cdma2000,
* CRC-11 flexray, CRC-11 umts,
* CRC-12 gsm, CRC-12 dect, CRC-12 cdma2000,
* CRC-13 bbc,
* CRC-14 gsm,
* CRC-15 can, CRC-15 MPT1327,
* CRC-16 ARC, CRC-16 CDMA2000, CRC-16 CMS, CRC-16 DDS110, CRC-16 DECTR, CRC-16 DECTX, CRC-16 DNP, CRC-16 EN13757, CRC-16 GENIBUS, CRC-16 GSM, CRC-16 IBM3740, CRC-16 IBMSDLC, CRC-16 KERMIT, CRC-16 LJ1200, CRC-16 M17, CRC-16 MAXIMDOW, CRC-16 MCRF4XX, CRC-16 MODBUS, CRC-16 NRSC5, CRC-16 OPENSAFETYA, CRC-16 OPENSAFETYB, CRC-16 PROFIBUS, CRC-16 SPIFUJITSU, CRC-16 T10DIF, CR-C16 TELEDISK, CRC-16 UMTS, CRC-16 USB, CRC-16 XMODEM,
* CRC-17 canfd,
* CRC-21 canfd,
* CRC-24 OS9, CRC-24 FLEXRAYA, CRC-24 FLEXRAYB, CRC-24 INTERLAKEN, CRC-24 LTEA, CRC-24 LTEB, CRC-24 OPENPGP,
* CRC-30 cdma,
* CRC-31 philips,
* CRC-32 MPEG2, CRC32 JAMCRC,
* CRC-40 gsm,
* CRC-64, CRC-64 ecma, CRC-64 go, CRC-64 ecma 182, CRC-64 xz, CRC-64 ms,
* CRC-82 darc,
* Adler8, Adler16, Adler32, Adler64,
* cksum mpeg2,
* Fletcher8, Fletcher16, Fletcher32, Fletcher64,
* SIZE64, Sum BSD, Sum SYSV,
* SUM8, SUM16, SUM24, SUM32, SUM64,
* XOR8, XOR16, XOR32
* xxHash32
* MurmurHash, MurmurHash2, MurmurHash2a, MurmurHash3
* SHA-0, SHA-1, SHA-224, SHA-256## PHP port available ##
https://github.com/PascalVault/PHP_Hashing## Usage examples
hashing a Stringuses Hasher;
var Hasher: THasher;
Hash: String;
begin
try
Hasher := THasher.Create('CRC-32 JAMCRC');
Hasher.Update('123456789');
Hash := Hasher.Final;
Hasher.Free;
Memo1.Lines.Add( Hash );
finally
end;hashing a Stream
uses Hasher;
var Hasher: THasher;
Hash: String;
Msg: TMemoryStream;
begin
try
Msg := TMemoryStream.Create;
Hasher := THasher.Create('CRC-32 JAMCRC');
Hasher.Update(Msg);
Hash := Hasher.Final;
Hasher.Free;
Memo1.Lines.Add( Hash );
finally
Msg.Free;
end;hashing a file
uses Hasher;
var Hasher: THasher;
Hash: String;
begin
try
Hasher := THasher.Create('CRC-32 JAMCRC');
Hasher.UpdateFile('directory/file.exe');
Hash := Hasher.Final;
Hasher.Free;
Memo1.Lines.Add( Hash );
finally
end;
## Using classes directly- without THasher
hashing a String
uses CRC64;
var Hasher: THasherCRC64;
Hash: String;
Msg: String;
begin
Msg := '123456789';
Hasher := THasherCRC64.Create;
Hasher.Update(@Msg[1], Length(Msg));
Hash := Hasher.Final;
Hasher.Free;
Memo1.Lines.Add( Hash );
end;
hashing an Arrayuses CRC64;
var Hasher: THasherCRC64;
Hash: String;
Msg: array of Byte;
Len: Integer;
begin
SetLength(Msg, Len);
Hasher := THasherCRC64.Create;
Hasher.Update(@Msg[0], Len);
Hash := Hasher.Final;
Hasher.Free;
Memo1.Lines.Add( Hash );
end;