diff --git a/ChangeLog b/ChangeLog
index 26a4f7f239..3be4d786ea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2024-10-17  Sam Russell  <sam.h.russell@gmail.com>
+
+	crc: New tests for non-byte-aligned data.
+	* tests/test-crc.c: New tests.
+	* modules/crc-tests (Files): Add dependency on randomb.c
+
 2024-10-16  Bruno Haible  <bruno@clisp.org>
 
 	crc tests: Add a benchmark program.
diff --git a/modules/crc-tests b/modules/crc-tests
index 97875264d9..ee05fb15ac 100644
--- a/modules/crc-tests
+++ b/modules/crc-tests
@@ -15,5 +15,6 @@ Makefile.am:
 TESTS += test-crc
 check_PROGRAMS += test-crc
 noinst_PROGRAMS += bench-crc
+test_crc_SOURCES = test-crc.c randomb.c
 bench_crc_SOURCES = bench-crc.c randomb.c
 bench_crc_CPPFLAGS = $(AM_CPPFLAGS) -DNDEBUG
diff --git a/tests/test-crc.c b/tests/test-crc.c
index 16d2ff08eb..c37f081694 100644
--- a/tests/test-crc.c
+++ b/tests/test-crc.c
@@ -21,11 +21,296 @@
 #include "crc.h"
 
 #include <stdio.h>
+#include <string.h>
+
+#include "macros.h"
+
+#define MAX_ALIGNMENT 32
+
+__uint32_t trailing_unaligned_byte_hashes[32] = {
+  0xDFDD19BE, 0xD2D258E4, 0x3F67D485, 0xFF300DA4, 0xFC46B871,
+  0x6B97174C, 0x3C6873C6, 0x3DE4FDA4, 0x783A2D5F, 0x2ECC37AC,
+  0xFEFAD741, 0x5FFB72DF, 0xF6E6DD29, 0xCD21E04E, 0x78CAE842,
+  0xCFC25F71, 0x7DC85CEE, 0xC971E8DA, 0x541726C1, 0xB15FFE02,
+  0xFABE629D, 0x4F254C30, 0x444B083F, 0x049F6D1D, 0x2D0670E0,
+  0x719C83F9, 0xEB7FAABC, 0xF0E4ECEE, 0x80958327, 0xD3566178,
+  0xD1683190, 0x7ABB3299
+};
+
+__uint32_t leading_unaligned_byte_hashes[32] = {
+  0xA6C6EC55, 0x10BA5C53, 0xE991A1AB, 0xD9279D86, 0xEF21C396,
+  0x78A4387C, 0x2F865A77, 0xAEA7587C, 0x9779C9D0, 0x914DD47A,
+  0xB42B53CB, 0x47D39201, 0xE53E891F, 0xB4501BA1, 0xE946965F,
+  0xF092BC6F, 0xA4D33D75, 0xD602ECA6, 0x107142FB, 0xD83B4AFD,
+  0x9B9CE2B9, 0xCF2C3E17, 0xCDE401A1, 0xE686DFE7, 0x5137E14F,
+  0xB309A32D, 0x2E1BB47F, 0xECA84001, 0x1F5B5472, 0x5BA21753,
+  0x203ACDCA, 0x48B56C22
+};
+
+__uint32_t variable_alignment_variable_length_hashes[32][32] = {
+  {
+    0x00000000, 0xB40BBE37, 0x98662B02, 0x062ED334, 0xFD64D7A9, 0xCA47A65D,
+    0x70A0B329, 0x191C96C2, 0xFECD07E0, 0x5120CD3D, 0xC886714D, 0x5416D158,
+    0xA9E8B882, 0x7B18C316, 0x0A7BB6E4, 0x19664DC7, 0x71A8E3C4, 0xDD7CD42A,
+    0x95623656, 0x2C4CFCBD, 0x7046B873, 0x7777762E, 0xAD10FF30, 0x15773DB6,
+    0x0515202E, 0xE0D0FC3E, 0x2F8FAC7B, 0x3A9ADE62, 0x13560288, 0x8BADEEE8,
+    0x4B8F79A9, 0xBDF67D65
+  },
+  {
+    0x00000000, 0x206F85B3, 0xBAF05980, 0x31D47EB6, 0x47831B01, 0x12F06A4B,
+    0xBAC2C66F, 0x560906E5, 0x21E2FDB3, 0xC2F61D5A, 0xD7CF24F3, 0xE86F1B17,
+    0xFB3C237E, 0x49927B6E, 0x1448CE34, 0x55116EE1, 0x965CB9E0, 0xEE983D95,
+    0x2E5A95BC, 0x07439E8C, 0x5A029C85, 0xEC39F0BA, 0x185B7E87, 0x54C60C57,
+    0xC958E68A, 0xE3AA53F4, 0x4751652C, 0x824FA5A4, 0xB9E49BAC, 0x3A0CB555,
+    0x098C409E, 0xF5064817
+  },
+  {
+    0x00000000, 0xE8B8D433, 0x63EED40D, 0x1B624BAF, 0x23C205F4, 0xE12D5A1D,
+    0xE859F969, 0xC5526247, 0x78C29BC0, 0xC7AF6A2F, 0x671AE5A6, 0x47D5D59A,
+    0xEE49B4F9, 0x7A84131C, 0x60CA0AC6, 0x3363D7EF, 0x7E821F6A, 0x03C86013,
+    0x4107B200, 0xBE4A17A2, 0x49D70D5A, 0xB8F47202, 0xC9B4D4F4, 0x861A6600,
+    0xEE887B4A, 0x6B85D98F, 0xCDBC834A, 0xFE19A7F5, 0x28FCA139, 0x4D9A9DF9,
+    0x2694AA31, 0xAF2C8FE6
+  },
+  {
+    0x00000000, 0xDCD60DCF, 0x6EB7D0EA, 0x25016570, 0x0BFEDE44, 0xFA04C3BD,
+    0x44FE29B0, 0x5B9A5034, 0x7D5C04E1, 0x1B7CF97F, 0xB8A6D9F6, 0xAAB2EA86,
+    0xBA7A84EF, 0x44BE57F7, 0x6299A388, 0xAD0511E5, 0x7E1C79AC, 0x1AA4C804,
+    0xB97C70C1, 0x9D6B0BDF, 0x25F2B9AB, 0x6623C973, 0xF569E79E, 0xF94CB688,
+    0x1EF8BEDE, 0xD1A59F4F, 0x8E6F4A66, 0x418A152A, 0xC94DAA93, 0x8B77F540,
+    0x88832D13, 0x1CE4E24F
+  },
+  {
+    0x00000000, 0x65B0D9C6, 0x17D20E9A, 0x4B130649, 0x84F552D8, 0x79584DF6,
+    0xC41812F5, 0x91A07485, 0x514FA04E, 0xE932EA95, 0x7E584E57, 0x4B7A8C09,
+    0x0D2610B2, 0x64668ED0, 0xC8B3370E, 0x49A1F47A, 0x75230268, 0xFD17DA78,
+    0x2F926B5D, 0x26F6A2C7, 0x2224E01B, 0xB64409DD, 0x16DA8B4C, 0x821E2E4A,
+    0x265B2E82, 0x6B4D0ADA, 0x83B8C8CD, 0xF7E1EF95, 0x622AFC30, 0xD86F0126,
+    0x4A07CA40, 0x144B5B85
+  },
+  {
+    0x00000000, 0x65B0D9C6, 0x29BC7941, 0x8A4C7595, 0x713BC9FC, 0x24C5986F,
+    0x819AD355, 0xD78C483D, 0x20B809FB, 0xD49B88EB, 0x8907B068, 0x37513C40,
+    0x37EF6ACC, 0xDCE1E2A5, 0x08B1DCCF, 0xCE695543, 0x5110696F, 0xACEDE929,
+    0x711D6860, 0x6AC13D9A, 0x2CB35FB6, 0xCC20C4CA, 0x861FF210, 0xADE197B4,
+    0xA47C25FA, 0xB819D92A, 0xC9B4395F, 0x19A58248, 0x86CA7756, 0x1A5C1E0A,
+    0x8212A8DF, 0x3BEC3260
+  },
+  {
+    0x00000000, 0x5BDEAE1D, 0xE8E30A9D, 0x7F82EEB1, 0x2CA61C65, 0x614759CF,
+    0xC7B6EFED, 0xA67BE188, 0x1D116B85, 0x23C476D4, 0xF52C0021, 0x0D98463E,
+    0x8F6806B9, 0x1CE30964, 0x8F797DF6, 0xEA5A3E44, 0x00EA5A3E, 0xF262EA14,
+    0x3D2AF73D, 0x64568237, 0x56D792A1, 0x5CE5BD96, 0xA9E04BEE, 0x2FC69CCC,
+    0x7728F60A, 0xF21528B8, 0x27F05482, 0xFD45092E, 0x44F9687A, 0xD2497C95,
+    0xADB5C13A, 0x8AC87C2D
+  },
+  {
+    0x00000000, 0x8BBEB8EA, 0xB180579C, 0x69B742A9, 0xF3D0C60A, 0x2C2A4E4D,
+    0x7046DEC1, 0x12C7AF8E, 0xB4197998, 0x8AD1D095, 0xC1EBCC7B, 0x8912C02C,
+    0x9C801469, 0xF1486256, 0x3CF2ACB3, 0x23E59513, 0xB79EB9AE, 0x16DB51FC,
+    0x881E81B7, 0xBB835982, 0xFE6F982F, 0x1BFFCAE3, 0x51C5FFF0, 0x583989EE,
+    0x555D1FA6, 0xDD5821D6, 0x91B934B6, 0xBA418F31, 0x33B95C6A, 0x8056DE97,
+    0x22824067, 0x909D9FD1
+  },
+  {
+    0x00000000, 0xF1D4E242, 0x089CE9CF, 0x576029CC, 0x5E899927, 0xDD53F550,
+    0x95621977, 0x70FF9696, 0x6DAD1B7D, 0x6FDDDAFA, 0x1303458C, 0x4ACCA604,
+    0xC29D3301, 0xC9CEBDB5, 0xCA730C37, 0x8B74CBE6, 0x6EE0722C, 0x0EB56840,
+    0x98DC95D4, 0x7C443322, 0x65CC9DF5, 0xA56F79F6, 0xB1AE865D, 0x07DC6A9F,
+    0x820F28AB, 0xBF526E3E, 0x590C6F79, 0x4B5DD828, 0x18FC1AAF, 0x0A18523D,
+    0x1B0BBD29, 0x0D766183
+  },
+  {
+    0x00000000, 0x90BF1D91, 0xDB2B76CB, 0xC06147DB, 0x69C6A3B9, 0x4C00D6FD,
+    0x7D4B9E67, 0xA71A6DFF, 0x6CA18F80, 0xA3D0A1FB, 0x841D917F, 0x05844A82,
+    0xBDB87656, 0xF304C93E, 0xF2910487, 0x542CC62D, 0x79889462, 0x4DCBE9CC,
+    0x6FFDBC08, 0xBE64EDAC, 0xB70338D6, 0x8AD2CAD4, 0x93832D57, 0x17243D6E,
+    0x54C97314, 0x825C3DB2, 0x47309342, 0xB597FFA2, 0x74044565, 0x7EC578F8,
+    0xFCC74D04, 0xAE2DAD07
+  },
+  {
+    0x00000000, 0x5CB36A04, 0xCB3D00E6, 0x31A5B3EF, 0xCE50412C, 0x8C1D2CB2,
+    0x51521D16, 0xB5819D2C, 0x7C696E2A, 0x7516CAF2, 0x967CBE44, 0xCF2CE927,
+    0xD4741C0B, 0xA405B071, 0x00A405B0, 0xF762F358, 0x8B49DA19, 0x99821860,
+    0xFDFB7B62, 0xCB9C48F7, 0xC6C745FA, 0x4F193517, 0x6124E6E6, 0xB7DC78DD,
+    0x600752AD, 0xCADAC5D8, 0xA5C06FAE, 0x7DA25EDE, 0x227FB4E7, 0x7193FA3D,
+    0xF1A571B8, 0x102BDF2B
+  },
+  {
+    0x00000000, 0xCC0C7795, 0xF8AEA21E, 0x042388B7, 0xEB0A15B7, 0x215FFEA0,
+    0x97F38676, 0xF7F5A4DB, 0xBF2794B2, 0xE06ACE8A, 0xB38610E0, 0xD108E1E1,
+    0xE4DFC7EA, 0x6739950B, 0xABB604CC, 0x7C7759B3, 0xAF766C15, 0xDDA20AA5,
+    0xCEBC4695, 0x657E6580, 0xFF6A1415, 0x8F9AF4EB, 0xC983BA72, 0x2610B316,
+    0x962FB83D, 0x75FC8C24, 0x701F0803, 0xDA10A7D8, 0xC70DB813, 0x2DC5E235,
+    0x83FE4025, 0x6A33DEB2
+  },
+  {
+    0x00000000, 0x7807C9A2, 0xC674DE7B, 0x791ACC7A, 0xC4185074, 0x16A8D715,
+    0x23CFCF68, 0xED9B4CEF, 0xF5E25F1B, 0x349B3BA3, 0x3E5AECE0, 0x9337A571,
+    0x009337A5, 0x9ABF2081, 0x742B6DBA, 0xD6A28885, 0x2DD44D05, 0x189A933A,
+    0x23C1FD2C, 0x204C444E, 0x73FC5AC7, 0xFBA7B03F, 0x2E4FAA31, 0x332D524F,
+    0xCB529EDE, 0x2DC9BD13, 0xC7FA6109, 0x36C4B097, 0xC7E16C04, 0xD2CA6491,
+    0xA66E9D03, 0xC771C629
+  },
+  {
+    0x00000000, 0xFED41B76, 0x07931002, 0x9AB820A6, 0x7E2BC49D, 0xC0C44769,
+    0x9A7F77F1, 0x0F9A8643, 0x51D19ABC, 0xB337ABB4, 0xFFBC5DDB, 0x36FCF6AB,
+    0x7D316247, 0x06CB847D, 0xD3D03F7F, 0x70B924B0, 0xA3CCB950, 0x8E1D2340,
+    0x64E5B5E3, 0xDBDF2C63, 0x2AB4F4B8, 0x5D42AFF6, 0x365E0859, 0x3F8358D5,
+    0xBAEFB55D, 0x56092B96, 0x56E5CD08, 0xA731C3AC, 0x0AA79FE4, 0x86D9754B,
+    0xBF56B863, 0x34D18F44
+  },
+  {
+    0x00000000, 0xBE0B1010, 0x69B8C9EE, 0x06DF0DD6, 0x21B22BB8, 0x6B4AE3DF,
+    0xD3BDBE18, 0xADB435F8, 0xC27A4B92, 0x2DC095C6, 0x5528E6BA, 0x17E296A5,
+    0x48A5D4DD, 0x0548F2C7, 0xB5D587C3, 0x6A05F575, 0xC5D03E4B, 0xF37CA176,
+    0x5B2DD2BC, 0x3C58C903, 0x01E729CF, 0x690725D7, 0x35DCAFDF, 0x5A3003B4,
+    0x8F3FAEFC, 0xFB5B73CB, 0xA5F1EE18, 0xC6A9285C, 0x43AF4042, 0xC64F76F2,
+    0xB3A03558, 0xEA66E70C
+  },
+  {
+    0x00000000, 0x74B1D29A, 0x51AAB1E8, 0xE08443AF, 0xE8585070, 0x955712D2,
+    0xD643F4FA, 0x2C0FDD7F, 0xF3957E95, 0xA794B31F, 0xB1AC7D97, 0x80D4CBB6,
+    0xDFE03B08, 0xBED4F02B, 0xC4DF9E48, 0x9D16A831, 0x43F4FFC2, 0x97912D77,
+    0x30226EC4, 0x04EB047B, 0xA50E5E6F, 0xF0AA9D1A, 0xB1FB43B9, 0xF1651901,
+    0x3829A7DD, 0x51E6299D, 0x5B8F4834, 0x005B8F48, 0x26D96B23, 0x42944107,
+    0x11439F1D, 0x8A748A73
+  },
+  {
+    0x00000000, 0x41047A60, 0x03F7E676, 0x17B449A5, 0x6311D890, 0x4E67928C,
+    0x95F12D10, 0x2E21FCAC, 0xF84C8F95, 0xBC9ECF95, 0x6ED79828, 0xC8B98618,
+    0xA374B9F2, 0x3BCD5471, 0xC2EC32F3, 0x36C1A6C4, 0x7E87BD1B, 0x74CF5527,
+    0x3DAC5A82, 0x61565389, 0xB907825A, 0xC76EAF36, 0x8C14125C, 0x2D8EFB9F,
+    0xC921AE7D, 0xFB1D6DCB, 0x2DF9F2E0, 0xFEF9E284, 0x0AFE57C5, 0x64615697,
+    0x876CC284, 0xBD3A9EDE
+  },
+  {
+    0x00000000, 0x4E048354, 0xC299FB24, 0xF97B4694, 0x49903C0B, 0xE62ACC3D,
+    0x6B8D7B38, 0x0F6B744F, 0xDA6FD3A4, 0x3F6F690E, 0x1AE5BB14, 0xAA10A9E4,
+    0xCF108530, 0xC3C39E24, 0x2E77CE1F, 0x6F9E002F, 0x556AB82F, 0x3356775D,
+    0x773466E1, 0xFA780905, 0x3CF99CD8, 0xCB5D4A10, 0x52A3BF7C, 0xF05D30FB,
+    0xFFFF3740, 0x57974A12, 0xAD301F0C, 0xE9CE952A, 0x543799BC, 0x2BE06D0B,
+    0xC0918CC0, 0xC1A18C27
+  },
+  {
+    0x00000000, 0xAED16A4A, 0x531D425A, 0x35E6B5B8, 0xB43E5882, 0x3001C1B1,
+    0x9B54C371, 0x1B9AF1B8, 0x2BAFC063, 0x29F26658, 0xD549B382, 0x6BBE1847,
+    0x0D06D426, 0xC0B76A79, 0xCBA104E6, 0xB776FD3F, 0x2E037B7C, 0x3B4023B3,
+    0x7F514D98, 0xB2C25A65, 0x7E03BEE7, 0x71CF8637, 0x1170C4DA, 0xB3770AEA,
+    0x61D888D9, 0xA1B04BF6, 0xB4AA0E7C, 0xD66209E6, 0xA0DC8071, 0x70CA280F,
+    0xCACA08A2, 0xB6ACE735
+  },
+  {
+    0x00000000, 0xC5BA3BBE, 0x921734A0, 0xA7F53155, 0x28A54DAF, 0x61435A9E,
+    0x2BD519C8, 0x7B9AFEB7, 0xA81C45AB, 0xF17CFE07, 0xF6485AA5, 0x439FA130,
+    0x342D465D, 0xF7567A1B, 0x744684E0, 0x38AC8440, 0x1439F0CB, 0x21A0CD45,
+    0x4AFE058C, 0xA72DD864, 0x05A77ACB, 0xA50F1211, 0xBF756E04, 0x266645C2,
+    0x2B923CD7, 0xF8493C55, 0x949C72B8, 0x2C4D02F9, 0x9325B29F, 0x3A26747C,
+    0xD737F49A, 0x22D5214D
+  },
+  {
+    0x00000000, 0xBE0B1010, 0x6CB89EFD, 0xF0632BDA, 0x41F4194B, 0xDD4C88D0,
+    0x6800FF70, 0xAD0F88B9, 0x02C09C82, 0x6B699168, 0xA6D73EF6, 0x46CF6947,
+    0x0A46614E, 0x6FBA3180, 0x750519AD, 0xCACFC793, 0x44CEE2B4, 0x8021A929,
+    0x015B50AF, 0x09B7177B, 0x6E62B1F0, 0x68B3D149, 0x2EDCBE50, 0x359B7444,
+    0x9151F7E3, 0xB6F77CCA, 0x926479E7, 0x6994A687, 0x29B05D3E, 0x4FF6420F,
+    0xA2288730, 0x7B130329
+  },
+  {
+    0x00000000, 0x71B18589, 0xA71697E4, 0x80C2715C, 0x5E5E3B7F, 0x2EEA53BA,
+    0xD6F849BB, 0xECB50A6F, 0xB53C7A3B, 0x546B6B53, 0xE0818275, 0xC2377E25,
+    0xB512F84F, 0x7E046E45, 0x6415ACAE, 0x1C0874CE, 0x30A9F79D, 0xCDE7AF64,
+    0x05CDB0BC, 0x6B6E9C44, 0xA4BAAAF1, 0xEBAA8C95, 0xDE503449, 0xEF0B401E,
+    0x7585A8DC, 0x6673BE62, 0xF4B2C6EF, 0x6A449234, 0xAF605FDE, 0x531CF36F,
+    0x80367B38, 0x3C83D2AA
+  },
+  {
+    0x00000000, 0x33031DE5, 0xF7515440, 0x4A28F415, 0x8399AD33, 0x423101C1,
+    0x5CF15B05, 0x18EBB62C, 0xD7153958, 0x77D025AF, 0xA4A61448, 0x867774C0,
+    0x03309578, 0x3C00D444, 0x5C8F6AD0, 0xCAE64DE0, 0xE3A9ED5F, 0xB4E817DA,
+    0xCF0E7D8E, 0xDFAFE1BE, 0x0DB2C5DF, 0x48BF848E, 0xEA9DF8BD, 0x3A5FCC36,
+    0x26E36F60, 0x1AFC3712, 0xA9A65264, 0xC4C8ECEA, 0x72C3AF69, 0x69740151,
+    0x0804492C, 0xF3B17501
+  },
+  {
+    0x00000000, 0x270241AA, 0x0A27AC66, 0x4AD582ED, 0x2393B23D, 0xE89B4781,
+    0xF28A9B09, 0x9CFB8C32, 0xDAFC435C, 0x80BF9B88, 0x1D37AFFF, 0xB5CDF89E,
+    0x75DF6E64, 0x67A895A2, 0x74D67A0F, 0xD3A22281, 0xD5B3E3C6, 0xDB6E7A35,
+    0x8308EBBD, 0x94E7336F, 0x834762F4, 0x5A869879, 0xA6E6D1FF, 0xC4C7AC69,
+    0x63C2AB75, 0x7A099803, 0x17CDB7DB, 0x23CEAA08, 0x53905D9A, 0x0488B648,
+    0xB9625CBF, 0x39BAD19E
+  },
+  {
+    0x00000000, 0x3C03E4D1, 0x1FE6808A, 0xF01075C4, 0x2C298EFE, 0x32F4456D,
+    0xD6E457AD, 0xBA06D252, 0x67674C1E, 0x04BC4159, 0x8A6175AD, 0xCA30A3FF,
+    0x00CA30A3, 0x03B6283C, 0x6C0523C5, 0xA4BDC14E, 0x387C7F05, 0xA532C914,
+    0x3BCB1201, 0x29E2028A, 0xED916122, 0x5AE84E7A, 0x59E9D559, 0x4586B5A0,
+    0x8C96FA46, 0x118D9DA6, 0x0D7CE7A3, 0x12BA95B7, 0x4116C0F5, 0x0CF70DF8,
+    0xD1B790FC, 0x0667028F
+  },
+  {
+    0x00000000, 0xEE0E612C, 0xCF549BF8, 0x0379B697, 0x06B5CCA9, 0x4AD9108D,
+    0x81F4CFDD, 0x1A5B20B2, 0xDBA192F6, 0xCCD7D607, 0xFC755FAA, 0x1BFDD024,
+    0x7071095F, 0xB8CDD406, 0xA6049AB3, 0xFB7248FF, 0xF899DC21, 0x6D257D37,
+    0xE60E797C, 0xB980DA70, 0xDFD96F19, 0x8DD7D49A, 0x473F18AB, 0x1B469A63,
+    0x5A1E9981, 0xA83DC1CC, 0xCF12A858, 0x717E9721, 0x8D797362, 0xC1EC64D8,
+    0x3A74BDAA, 0x783DBD1F
+  },
+  {
+    0x00000000, 0xFD62F97A, 0x00FD62F9, 0xACBC0422, 0x301943ED, 0xCC3C6ED6,
+    0x8DC4319B, 0x9984958B, 0xE221FE81, 0xF8808F97, 0x439169E5, 0x9C4A97C0,
+    0xD891614D, 0x476A5E1E, 0x53F4F96E, 0x7F39F942, 0xB919EDF0, 0xE3DA12FF,
+    0xCD34DC81, 0x15171995, 0x6913D5E7, 0x696FD12B, 0xF6D0498A, 0x8325558E,
+    0x385BE791, 0xDA58E337, 0xAC66A1A3, 0x8E128958, 0x07E3D690, 0x42B57BBA,
+    0x65F26CBD, 0x640E5AAC
+  },
+  {
+    0x00000000, 0xB0D09822, 0xBD0D2284, 0x0FBDF416, 0xE66CE1F5, 0x2F891066,
+    0x5A2A560B, 0x0F5AD362, 0xC16E4778, 0x731D78C4, 0xD0130B8F, 0x3EBE64D0,
+    0xC9329EE2, 0xE7711F99, 0x5C541B1B, 0xAB8D6942, 0xC6A754DB, 0xF1124516,
+    0x7B4039EB, 0xDEC0DEFC, 0xE3BDCBCC, 0xC834EC4B, 0x6F78430D, 0x4C06681D,
+    0x3E2271B3, 0x46579C08, 0xCFFCC205, 0x12781592, 0xACAE8155, 0x55A988AE,
+    0xE0804096, 0x36E3CAB6
+  },
+  {
+    0x00000000, 0x68DDB3F8, 0x56DB1990, 0xE2EEA10D, 0x9CEBE808, 0xF09378AC,
+    0x47425C07, 0xFCFECA20, 0x1690318F, 0x31781EDE, 0x22336EA7, 0x074FF777,
+    0x67DA053B, 0x640C72C5, 0xCADECEF8, 0xED725DEE, 0xA78A543C, 0xA0AD682C,
+    0xDB1B64BE, 0x7B6A30CA, 0x21CF9E85, 0x134D57C8, 0xA7746B36, 0x9275FAF0,
+    0xA92EDBA9, 0x6EC2283C, 0x4DDCA370, 0xE2F5A6B7, 0x1BE350DD, 0x29C22AC8,
+    0xBAF9F42F, 0x99B3A84E
+  },
+  {
+    0x00000000, 0xE5D5BE0D, 0x6CE34053, 0x10B6991A, 0x03A65495, 0x18B4E123,
+    0xC0A2D84C, 0x52A840EE, 0x0B897761, 0x79D731D3, 0x507CA60D, 0xD75DAE48,
+    0xADB0D5E8, 0x8FC82E2A, 0x85EAF8F6, 0xB48E54CF, 0x840ACF8A, 0xE48AC5C4,
+    0xCB853949, 0x55CEA316, 0x7A3F940B, 0xA5708AFF, 0x70CF8405, 0x641B6744,
+    0xB0B48345, 0x64DB1C43, 0x5D0CC01E, 0xB456B2F7, 0xF2D656FC, 0x9B9614E6,
+    0x7B2ABDBA, 0xEC18D89B
+  },
+  {
+    0x00000000, 0x12B7E950, 0x89C19C09, 0x8781624E, 0x0931CD49, 0x6DD4D526,
+    0xFF62BEA5, 0xEA2A2587, 0x305FD5CC, 0xDD3D231C, 0xBD60CF3F, 0x63BB0C16,
+    0xD503FAE8, 0xF0DA90BE, 0xCCFCAD05, 0xFFC396DD, 0x11FEC8CA, 0x2CC86043,
+    0xB5FC0751, 0x9267729C, 0xCBF3D4FE, 0x07A637CD, 0xF1D34475, 0xE1FF4B5C,
+    0x00E1FF4B, 0x53B372CF, 0x458CEF07, 0x4F9A7EBD, 0x9AF029C8, 0xA7FDD648,
+    0xBF779CC0, 0xED07F4BC
+  },
+  {
+    0x00000000, 0xE2B87A14, 0xE4EC7771, 0xBF348D61, 0x58D7789C, 0xD4E3E79A,
+    0x5C6789E3, 0x7A363D21, 0x03CCD431, 0xF86162BD, 0x6048EFB7, 0x74D19A75,
+    0x7EC5AD27, 0x45A199D8, 0x07286580, 0x04DC0E70, 0x07691817, 0xD9D133C4,
+    0x126E3863, 0xE6713239, 0x028BE238, 0x3C016F33, 0x7E8D7DD2, 0x0A7E235A,
+    0x3909CDE1, 0x99305877, 0x1F43B336, 0xE0CAAAAD, 0x9A5F791C, 0xD34CAB82,
+    0x75B9EF37, 0x37AD821F
+  }
+};
 
 int
 main (int argc, char *argv[])
 {
   uint32_t p;
+  size_t i, j;
 
   p = crc32_update_no_xor (42, "foo", 3);
   if (p != 0x46e87f05)
@@ -55,5 +340,51 @@ main (int argc, char *argv[])
       return 1;
     }
 
+  /*
+   * Tests for new CRC32 implementation
+   * The original implementation works on a byte-by-byte basis
+   * but new implementations may work on longer alignments.
+   * This test will confirm correct operation with non-aligned
+   * data.
+   */
+
+  /* Test for trailing unaligned bytes */
+
+  for (i = 0; i < MAX_ALIGNMENT; i++)
+    {
+      p = crc32_update_no_xor (0, randomb, MAX_ALIGNMENT + i);
+      if (p != trailing_unaligned_byte_hashes[i])
+        {
+          printf ("aligned c at %lu length %lu got %lx\n", (size_t) 0, MAX_ALIGNMENT + i, (unsigned long) p);
+          return 1;
+        }
+    }
+
+  /* Test for leading unaligned bytes */
+
+  for (i = 0; i < MAX_ALIGNMENT; i++)
+    {
+      p = crc32_update_no_xor (0, randomb + i, (MAX_ALIGNMENT * 2) - i);
+      if (p != leading_unaligned_byte_hashes[i])
+        {
+          printf ("aligned c at %lu length %lu got %lx\n", i, (MAX_ALIGNMENT * 2) - i, (unsigned long) p);
+          return 1;
+        }
+    }
+
+  /* Combined test of multiple lengths at multiple alignments */
+
+  for (i = 0; i < MAX_ALIGNMENT; i++)
+    for (j = 0; j < MAX_ALIGNMENT; j++)
+      {
+        p = crc32_update_no_xor (0, randomb + i, j);
+        if (p != variable_alignment_variable_length_hashes[i][j])
+          {
+            printf ("aligned c at %lu length %lu got %lx\n", i, j, (unsigned long) p);
+            return 1;
+          }
+      }
+
+
   return 0;
 }
