45 Commits

Author SHA1 Message Date
Matt Nadareski
febb341421 Expose all hash types and cleanup
This exposes all HashType implementations for all .NET versions. For versions that are not supported for a particular hash, only the hash creation method is gated. This allows for access to the type, name, description, and zero bytes/string properties.
2026-07-23 13:26:21 -04:00
Matt Nadareski
529dae9658 Add CRC-82/DARC 2026-03-20 12:57:41 -04:00
Matt Nadareski
20cc2f6036 If migrating away from enum, do it more extensibly 2026-03-20 09:21:47 -04:00
Matt Nadareski
00a5c6c2c5 Convert HashType from enum to static class with constants
Because the ordering of the enum was not guaranteed, both because of variances in .NET version and even library version, any change could mean that invisible version bumps would misalign. This attempts to fix that by converting HashType from an enum to a static class with a set of constants instead. This allows logical groupings and orderings without it affecting the values of each item.
2026-03-20 00:18:40 -04:00
Matt Nadareski
0075b9b1ad Add CRC-32/DVD-ROM-EDC (fixes #4) 2026-01-11 09:20:15 -05:00
Matt Nadareski
53e28df7f8 Make MekaCrc official 2025-09-25 07:51:44 -04:00
Matt Nadareski
adc918ea8a Make FNV public 2024-11-11 04:00:56 -05:00
Matt Nadareski
3382c20217 Add MD4 efficient implementation 2024-11-10 23:32:33 -05:00
Matt Nadareski
3e18ddce9f Create inefficient MD2 implementation 2024-11-10 21:36:38 -05:00
Matt Nadareski
d57396612f Add Fletcher family checksums 2024-11-09 23:14:31 -05:00
Matt Nadareski
6df184fa4e Add Tiger2 variants (0x80 pad start) 2024-11-09 21:32:02 -05:00
Matt Nadareski
bb9d4155d2 Add Tiger family hashes 2024-11-09 20:46:05 -05:00
Matt Nadareski
79c10cf2fb Add RIPEMD-256 implementation 2024-11-09 02:59:17 -05:00
Matt Nadareski
ffc6bc045d Add RIPEMD-320 implementation 2024-11-09 02:54:04 -05:00
Matt Nadareski
d096cbf07e Add RIPEMD-128 implementation 2024-11-09 02:33:51 -05:00
Matt Nadareski
bb67c3e2f3 Migrate to internal RIPEMD-160 implementation 2024-11-09 01:18:52 -05:00
Matt Nadareski
f74c9ddffd Use internal implementation for XXH64 2024-11-08 13:11:58 -05:00
Matt Nadareski
b728aa77c7 Use internal implementation for XXH32 2024-11-08 12:33:43 -05:00
Matt Nadareski
9c27523612 xxHash aren't reversed 2024-11-08 00:54:22 -05:00
Matt Nadareski
7559ba2edc Add CRC-1 (parity bit) 2024-11-07 22:25:48 -05:00
Matt Nadareski
7878591107 Add CRC-3/4/5/6/7 implementations 2024-11-07 15:18:18 -05:00
Matt Nadareski
6f536b8e2a Add CRC-8 implementations 2024-11-07 14:54:44 -05:00
Matt Nadareski
0e8694cc90 Add CRC-10/11/12/13/14/15 implementations 2024-11-07 14:28:08 -05:00
Matt Nadareski
a7f8e0664a Fix reflecting initial value 2024-11-07 13:56:56 -05:00
Matt Nadareski
1a941b44fc Fix and reenable CRC-17 2024-11-07 12:49:33 -05:00
Matt Nadareski
c1a9e007c5 Make test more maintainable 2024-11-07 12:24:12 -05:00
Matt Nadareski
fb83427c91 Add CRC-17 and CRC-21 implementations 2024-11-07 03:36:34 -05:00
Matt Nadareski
57f9aa9133 Add CRC-30 and CRC-31 implementations 2024-11-07 03:13:05 -05:00
Matt Nadareski
1fc4c13683 Add testing comment 2024-11-06 15:19:57 -05:00
Matt Nadareski
2ef3a6f254 Add CRC-24 implementations 2024-11-06 14:45:19 -05:00
Matt Nadareski
827239a08a Add CRC-40 implementation 2024-11-06 14:32:17 -05:00
Matt Nadareski
c1e847c1cf Reenable RIPEMD test 2024-11-06 14:15:55 -05:00
Matt Nadareski
9610e1756f Add remaining CRC-16 implementations 2024-11-06 06:31:29 -05:00
Matt Nadareski
3905905301 Make CRC-64/ECMA default 2024-11-06 05:21:39 -05:00
Matt Nadareski
4c006317be Add remaining CRC-32 implementations 2024-11-06 05:19:13 -05:00
Matt Nadareski
2dcf0e7eea Add remaining CRC-64 implementations 2024-11-06 05:08:21 -05:00
Matt Nadareski
0cf07ae13a Remove external CRC-32 implementations 2024-11-06 04:54:27 -05:00
Matt Nadareski
9e48cca1a3 Add unoptimized generic CRC framework 2024-11-06 04:46:39 -05:00
Matt Nadareski
23679266b4 Finalize CRC64 support names 2024-11-06 02:54:27 -05:00
Matt Nadareski
992e22cc76 ECMA/ISO war 2024-11-06 02:34:59 -05:00
Matt Nadareski
5cfe0dcb09 Remove "CRC64_ECMA" 2024-11-06 02:21:20 -05:00
Matt Nadareski
3ebb489f23 Use correct name for implementation 2024-11-06 02:14:58 -05:00
Matt Nadareski
94b9e91718 Create and use CRC64_ECMA 2024-11-06 00:37:40 -05:00
Matt Nadareski
b22f3d2743 Better documentation in tests 2024-07-19 10:50:46 -04:00
Matt Nadareski
23ed4e9849 Ensure multiple files hash correctly from archives 2024-07-19 10:47:42 -04:00