In cryptography, a memory-hard function (MHF) is a function that costs a significant amount of memory to efficiently evaluate.[1] It differs from a memory-bound function, which incurs cost by slowing down computation through memory latency.[2] MHFs have found use in key stretching and proof of work as their increased memory requirements significantly reduce the computational efficiency advantage of custom hardware over general-purpose hardware compared to non-MHFs.[3][1]