interesting MD5 hashes

intro

The cryptographic hash function MD5 (nowadays considered insecure) outputs a 128-bit hash (usually represented as 32 hexadecimal digits). Using a simple Python program and Python’s hashlib module, I hashed a large number of bytestrings and analyzed the hashes to find interesting patterns that might suggest previously unknown vulnerabilities. (I did not find any but I am posting the results in case someone else wants to look at them.)

bytestrings hashed

results

bits

messagehash
bytesASCIIungroupedgroupednotes
66 71 62 57 6bfqbWk01084810200000311049083e8180011a01084810 20000031 1049083e 8180011aonly 26 bits set
38 6e 53 51 45 488nSQEHfbbebb7ffef9cddcfbf7ffbfbdf1dfeefbbebb7f fef9cddc fbf7ffbf bdf1dfee102 bits set
78 48 73 42 76 58xHsBvXdf9fd3bff8fffebefff9bfdebff3b9cfdf9fd3bf f8fffebe fff9bfde bff3b9cf102 bits set

nybbles (hexadecimal digits)

All nybbles are 0x6 or smaller:

messagehash
bytesASCIIungroupedgroupednotes
31 43 37 51 32 351C7Q255100040601260056350266130025444051000406 01260056 35026613 00254440

All nybbles are 0x8 or larger:

messagehash
bytesASCIIungroupedgroupednotes
48 38 77 65 6d 6dH8wemmc89ecf88febacbed9d9c999abbbb8b9bc89ecf88 febacbed 9d9c999a bbbb8b9b
4a 54 30 75 33 57JT0u3W998cecadc9deadc8fcbeccebe9ca9bba998cecad c9deadc8 fcbecceb e9ca9bba
4c 6e 43 63 4a 36LnCcJ69ffaaccaeab8e9f98da88e9dfebefaad9ffaacca eab8e9f9 8da88e9d febefaad
4f 58 4f 76 79 44OXOvyDcacaeacca98daabbaeecffdafdc99dc8cacaeacc a98daabb aeecffda fdc99dc8
51 43 69 4b 36 64QCiK6dfddfecbacafeddafebead9fefbcef8cdfddfecba cafeddaf ebead9fe fbcef8cd
56 35 66 51 62 69V5fQbi9abcdfabfade8bdeb8ae88cfbb8988a89abcdfab fade8bde b8ae88cf bb8988a8
57 70 79 78 33 61Wpyx3a8fa88dfcfbabcaaacbaceaea89eda99b8fa88dfc fbabcaaa cbaceaea 89eda99b
5a 73 39 64 33 35Zs9d35f9bf8ce89aee989e8bffcbcdfcecab89f9bf8ce8 9aee989e 8bffcbcd fcecab89
6b 6e 54 72 6c 39knTrl9edb9cc9bb8eeaaf8ff8989f9a9bd9898edb9cc9b b8eeaaf8 ff8989f9 a9bd9898
71 5a 41 48 68 6aqZAHhjbb999ee8afdbfb89cccb9efec8cfdf8abb999ee8 afdbfb89 cccb9efe c8cfdf8a
74 4e 38 32 33 35tN8235cdafdf9ceccca8be9bbcdb9f8d9e9c9ecdafdf9c eccca8be 9bbcdb9f 8d9e9c9e
76 35 56 6a 65 6fv5Vjeob9bf98bedcbb9ad8ebcd8f9bfe88ededb9bf98be dcbb9ad8 ebcd8f9b fe88eded
79 77 68 66 64 66 6eywhfdfne8e99eacdecefeb9b8a88cb88afae8d8e8e99eac decefeb9 b8a88cb8 8afae8d8
61 74 76 62 64 64 7aatvbddzefedaae9cafdd8a98ad8abcaefd8ea89efedaae9 cafdd8a9 8ad8abca efd8ea89
62 68 6e 6b 68 69 6fbhnkhiocaf8cbbd9dbb9f9f9ec88fc98a89ddcdcaf8cbbd 9dbb9f9f 9ec88fc9 8a89ddcd

The same nybble occurs 16 times:

messagehash
bytesASCIIungroupedgroupednotes
6c 4e 51 43 33 54lNQC3T181139c11021c19f41c12c2111111261181139c1 1021c19f 41c12c21 11111261nybble 1
50 79 69 39 72 46Pyi9rF3144b3333c3d332225f8333333d33a103144b333 3c3d3322 25f83333 33d33a10nybble 3
6a 46 66 44 55 4ajFfDUJ13bba033c3133d2d33a13c33e363303313bba033 c3133d2d 33a13c33 e3633033nybble 3
61 4b 70 35 6b 47aKp5kGc1666ab362b6666e6f760646566636dac1666ab3 62b6666e 6f760646 566636danybble 6
63 75 7a 34 71 68cuz4qh6686a3066626666fc76286c67606c5266686a306 6626666f c76286c6 7606c526nybble 6
44 7a 6a 39 33 52Dzj93R7327b7049ab5067777792c7777770f777327b704 9ab50677 77792c77 77770f77nybble 7
61 75 45 50 75 6eauEPun88eb8888a385148888c6888ee88454b588eb8888 a3851488 88c6888e e88454b5nybble 8
30 70 7a 52 7a 560pzRzV9e919905909c7699e69998ae949997939e919905 909c7699 e69998ae 94999793nybble 9
41 50 30 4c 66 59AP0LfYf984596f9c9c9399999f9da299d999a8f984596f 9c9c9399 999f9da2 99d999a8nybble 9
76 33 6c 79 61 69v3lyai99939599684989c298399999c79f5d3999939599 684989c2 98399999 c79f5d39nybble 9
58 4c 4d 4f 52 44 43XLMORDCccfc1cbcc0c9c9c0cccaec9a91ccc0a8ccfc1cbc c0c9c9c0 cccaec9a 91ccc0a8nybble c
67 78 62 6e 75 77gxbnuwdddfdf8cbeddd87d8b1d0dbdddd455dddddfdf8c beddd87d 8b1d0dbd ddd455ddnybble d
31 50 6a 44 31 561PjD1V2eeee9e6efee08eeeef1fe7e7eedc95a2eeee9e6 efee08ee eef1fe7e 7eedc95anybble e
71 6a 54 78 30 54qjTx0T8ee7eefee109eeebeb8ee0e92ed3eae38ee7eefe e109eeeb eb8ee0e9 2ed3eae3nybble e

There are only 6 unique nybbles:

messagehash
bytesASCIIungroupedgroupednotes
6f 71 4c 4a 64 4doqLJdM32bdbdb2d30130d3d21b33221d02ddd232bdbdb2 d30130d3 d21b3322 1d02ddd2nybbles 0 1 2 3 b d
30 57 4b 34 66 440WK4fD3bcebbcb3322c222cc3b3eb02332ecc33bcebbcb 3322c222 cc3b3eb0 2332ecc3nybbles 0 2 3 b c e
78 54 39 47 30 65xT9G0eececa0a2e80caa088e0c00ee888eaa88ececa0a2 e80caa08 8e0c00ee 888eaa88nybbles 0 2 8 a c e
42 44 31 53 59BD1SYd2813d1c13881c888c2c11d3c32dcdcdd2813d1c 13881c88 8c2c11d3 c32dcdcdnybbles 1 2 3 8 c d
6f 75 41 67 5a 4bouAgZK2c3cf38228c22f8cfc1f882cff33cf832c3cf382 28c22f8c fc1f882c ff33cf83nybbles 1 2 3 8 c f
4c 37 61 6a 49 49L7ajII322253352af53aaf236f2f22553f622532225335 2af53aaf 236f2f22 553f6225nybbles 2 3 5 6 a f
63 39 36 7a 30 61c96z0afd444ff2efddcdccd24f2edef2dc2ddffd444ff2 efddcdcc d24f2ede f2dc2ddfnybbles 2 4 c d e f
48 4d 41 67 57 4aHMAgWJ5b28f5fbe8eb288b2bb5bb88f5bb82bf5b28f5fb e8eb288b 2bb5bb88 f5bb82bfnybbles 2 5 8 b e f
cd fd a7 bde7aaf2fe27f87eaeefafeee2f882e8e8e7aaf2fe 27f87eae efafeee2 f882e8e8nybbles 2 7 8 a e f
39 49 57 7a 65 739IWzes94944fec9469ccececc69c44e464cc4694944fec 9469ccec ecc69c44 e464cc46nybbles 4 6 9 c e f
6c 61 74 75 78 6d 79latuxmya8a444d49fd9adaf8af88aa4d9a9a8f9a8a444d4 9fd9adaf 8af88aa4 d9a9a8f9nybbles 4 8 9 a d f

bytes (octets)

messagehash
bytesASCIIungroupedgroupednotes
31 31 31 56 42 6d111VBm29290a1c2910122b2d1d2b05331a2a0f29 29 0a 1c 29 10 12 2b 2d 1d 2b 05 33 1a 2a 0fall bytes are 33 or smaller
4a fe bf 4ae2e4f3e7fbdfd9f7e9e5dee4ddd3d0e3e2 e4 f3 e7 fb df d9 f7 e9 e5 de e4 dd d3 d0 e3all bytes are d0 or larger

The same byte occurs 7 times:

messagehash
bytesASCIIungroupedgroupednotes
6d 6c 4f 6b 56 6bmlOkVk569f22222297f12222a9fb3922a54d2256 9f 22 22 22 97 f1 22 22 a9 fb 39 22 a5 4d 22byte 22
46 45 79 46 55 51FEyFUQ3333bfa6df333347162d533333ff473333 33 bf a6 df 33 33 47 16 2d 53 33 33 ff 47 33byte 33
47 39 38 71 6a 32G98qj25e3d5e5e5ea25ed44d385e82a65eec525e 3d 5e 5e 5e a2 5e d4 4d 38 5e 82 a6 5e ec 52byte 5e
4c 50 59 42 43 56 4fLPYBCVO32eebdbdbdaebd70bdbd6b5aafac06bd32 ee bd bd bd ae bd 70 bd bd 6b 5a af ac 06 bdbyte bd
63 69 67 6b 69 68 76cigkihv201ac7c7d9c79dc779c7c7c7cb8bbd5b20 1a c7 c7 d9 c7 9d c7 79 c7 c7 c7 cb 8b bd 5bbyte c7
6b 3c c7 b502ea7c8b46eabfeaeaea5448ead82cea02 ea 7c 8b 46 ea bf ea ea ea 54 48 ea d8 2c eabyte ea

There are only 8 unique bytes:

messagehash
bytesASCIIungroupedgroupednotes
4c 55 49 4e 51 41LUINQA2f9501c695250202256cc60295926c952f 95 01 c6 95 25 02 02 25 6c c6 02 95 92 6c 95bytes 01 02 25 2f 6c 92 95 c6
6e 51 4d 33 30 6enQM30n033b03656bbc826b8a65bc65bc94038a03 3b 03 65 6b bc 82 6b 8a 65 bc 65 bc 94 03 8abytes 03 3b 65 6b 82 8a 94 bc
fe b7 a5 2fe34c7740777777aa4a40aa4d4caa4004e3 4c 77 40 77 77 77 aa 4a 40 aa 4d 4c aa 40 04bytes 04 40 4a 4c 4d 77 aa e3
66 66 4d 34 31 72ffM41reb6b9b6b9b0debbe0d6bda6b5a0d295aeb 6b 9b 6b 9b 0d eb be 0d 6b da 6b 5a 0d 29 5abytes 0d 29 5a 6b 9b be da eb
69 6b 77 4d 54 34ikwMT4f6609481569094940e5694905a5a810ef6 60 94 81 56 90 94 94 0e 56 94 90 5a 5a 81 0ebytes 0e 56 5a 60 81 90 94 f6
6c 78 75 7a 78 39lxuzx9c9c93aee3a28c9eec9ceddb1dd28b119c9 c9 3a ee 3a 28 c9 ee c9 ce dd b1 dd 28 b1 19bytes 19 28 3a b1 c9 ce dd ee
57 57 42 4f 4d 57 43WWBOMWCd7725f653120d7d5725e72655f5f725ed7 72 5f 65 31 20 d7 d5 72 5e 72 65 5f 5f 72 5ebytes 20 31 5e 5f 65 72 d5 d7
65 4b 6c 70 37 43eKlp7C416741bad6c6ac41ba41dcdc21dc21c641 67 41 ba d6 c6 ac 41 ba 41 dc dc 21 dc 21 c6bytes 21 41 67 ac ba c6 d6 dc
55 56 67 59 68 4aUVgYhJ3d23276fa1a59f464627a56f3d9f9f9f3d 23 27 6f a1 a5 9f 46 46 27 a5 6f 3d 9f 9f 9fbytes 23 27 3d 46 6f 9f a1 a5
74 75 68 45 45 7atuhEEzd82d5f2d7bd1d17b7b5fedacd8d88a5fd8 2d 5f 2d 7b d1 d1 7b 7b 5f ed ac d8 d8 8a 5fbytes 2d 5f 7b 8a ac d1 d8 ed
58 41 5a 57 43 4a 41XAZWCJA32f65cf7b85cf6818ef632f69c81819c32 f6 5c f7 b8 5c f6 81 8e f6 32 f6 9c 81 81 9cbytes 32 5c 81 8e 9c b8 f6 f7
41 66 37 52 41 41Af7RAA7c89c6944494f74494447c7ef7f74f4f7c 89 c6 94 44 94 f7 44 94 44 7c 7e f7 f7 4f 4fbytes 44 4f 7c 7e 89 94 c6 f7

unsigned 16-bit integers

The integers can be big-endian (most significant byte first) or little-endian (least significant byte first).

messagehash
bytesASCIIungroupedgroupednotes
39 35 38 45 46 61958EFa08f9032801a405c20455026d0b590b2d08f9 0328 01a4 05c2 0455 026d 0b59 0b2dall big-endian 16-bit integers are 0b59 or smaller
4d 78 6f 57 67 70MxoWgp9506e10b180097004e04d6073b0b50049506 e10b 1800 9700 4e04 d607 3b0b 5004all little-endian 16-bit integers are 0be1 or smaller
74 67 6d 72 76 7a 6etgmrvznf7d6f4abf8c7fd12fa00fe45f7a5fbfcf7d6 f4ab f8c7 fd12 fa00 fe45 f7a5 fbfcall big-endian 16-bit integers are f4ab or larger
72 78 35 63 48 78rx5cHx45f9b1fbcbf446f8c0f64ff5a6fe49fd45f9 b1fb cbf4 46f8 c0f6 4ff5 a6fe 49fdall little-endian 16-bit integers are f4cb or larger

unsigned 32-bit integers

The integers can be big-endian (most significant byte first) or little-endian (least significant byte first).

messagehash
bytesASCIIungroupedgroupednotes
36 76 63 47 47 496vcGGI00461e7a008ab2480031b8520033da4e00461e7a 008ab248 0031b852 0033da4eall big-endian 32-bit integers are 008ab248 or smaller
47 68 77 71 54 57GhwqTW8faf1400fd755900ecfd5f00d54474008faf1400 fd755900 ecfd5f00 d5447400all little-endian 32-bit integers are 007444d5 or smaller
6e 6c 7a 66 67 70 6fnlzfgpoff8dfa57ffdd17f1ff8caf60ff95562fff8dfa57 ffdd17f1 ff8caf60 ff95562fall big-endian 32-bit integers are ff8caf60 or larger
4d 4e 4b 42 5a 4c 41MNKBZLA9268baffe4f075ff027da5ffb2d87aff9268baff e4f075ff 027da5ff b2d87affall little-endian 32-bit integers are ff75f0e4 or larger