OFFSET
1,3
COMMENTS
We consider iterations of the MD5 function which returns a 128-bit hash value as "message digest" for any input sequence of bits. We can feed this result again as input (of length = 128 bit) to the MD5 function. Since we are here interested in record lows, we use as starting value the lexicographically largest possible 128-bit input which consists of 128 bits 1.
We list "iteration numbers" k such that the k-fold repeated MD5 function yields record low values.
This is the analog to A393294 which lists the k-values for record highs when starting with 128 bits 0, similar to A234849 which also the iteration numbers for record highs, but starting with an empty message "" (of length = 0 bits).
The sequence is finite, since the record lows corresponding to the iteration numbers are strictly decreasing to 0.
LINKS
Michael S. Branicky, Table of n, a(n), record value (in hex), # of leading zeros
Wikipedia, MD5.
EXAMPLE
We consider as initial value for the iterations the message that consists of 128 bits 1, or 16 bytes 255 = 0xff. This represents the largest integer that can be encoded with 128 bits, and the largest possible bit-string of length 128 in lexicographic order. As explained in Comments, we consider this by convention as the first (or "zeroth") record low.
The following table gives iteration numbers k and the resulting 128 bit message digest in its 32-digit hexadecimal representation, which is fed into the MD5 function at the next iteration:
k | MD5^k(128 bits 1) | #lz | record low?
---------+----------------------------------+----------------
0 | ffffffffffffffffffffffffffffffff | 0 | yes => a(1) = 0
1 | 8d79cbc9a4ecdde112fc91ba625b13c2 | 0 | yes => a(2) = 1
2 | d1096c73e4bec6f9dd017fb2a10b1b54 | 0 | no
3 | cdf209766e869c13551dc45acbd90019 | 0 | no
4 | d539daa1d96959674dbca360f53edf0f | 0 | no
5 | 43bb38f62f513fa28cf28a59d7512540 | 1 | yes => a(3) = 5
6 | 790040fd40f963fb6640ab35f46a113f | 1 | no
7 | 0b065300a3311ae95c43b45d0414d28f | 4 | yes => a(4) = 7
... | ... | ... | no
42 | 04ac12e0b34aff0ad4fb85ce49991bf6 | 5 | yes => a(5) = 42
147 | 0023b5149f0842a563334c2fe1953199 | 10 | yes => a(6) = 147
176 | 001627f5de9615fb2191d3f0fe6eaa44 | 11 | yes => a(7) = 176
3536 | 0012dfe3be2189f5a1badd6925cc56b7 | 11 | yes => a(8) = 3536
5866 | 000b21673f479bb0835d7518dbcf13e4 | 12 | yes => a(9) = 5866
8099 | 00058ec88240a1c9be957d797641fd9a | 13 | yes => a(10) = 8099
38939 | 0000b1850cbc3a9da2a076fab4cd5f7a | 16 | yes => a(11)
41788 | 00000ce88696e96703e30a0921e8e27b | 20 | yes => a(12)
822951 | 00000b6884ef416ed523f28ef71ebd46 | 20 | yes => a(13)
2971632 | 0000084a3b17caaf5c20b165e9ffc31d | 20 | yes => a(14)
6665500 | 0000001bec3cc044e45efcb77b316ef8 | 27 | yes => a(15)
... | ... | ... | ...
The column "#lz" gives the number of leading 0-bits, which for the record values are: 0, 0, 1, 4, 5, 10, 11, 11, 12, 13, 16, 20, 20, 20, 27, ....
PROG
(Python)
from hashlib import md5
def A393134_gen(starting_value = 2**128-1): # optional alt. starting value
record = b'\xff'*17; msg = starting_value.to_bytes(16)# byteorder='big'
for i in range(1<<63): # sys.maxint: practically infinity
if msg < record: record = msg; yield i; #print(i, msg.hex())
msg = md5(msg).digest()
print([an for an, i in zip(A393134_gen(), range(12))])
CROSSREFS
KEYWORD
nonn,hard,more,fini
AUTHOR
M. F. Hasler, Mar 08 2026
EXTENSIONS
a(16)-a(21) from Michael S. Branicky, Mar 10 2026
STATUS
approved
