Memory-hard functions are cryptographic primitives designed to require a significant amount of memory to compute, making them resistant to attacks using specialized hardware like ASICs and GPUs. They are particularly useful in applications like password hashing and proof-of-work systems, where they help to ensure that the cost of brute-force attacks remains prohibitively high.