Sometimes when I'm designing a puzzle which has more than one stage, I'd like to incorporate a 'check' for some of the answers (e.g. the answers of the earlier stages).
Example: This puzzle needed 2 keys to decode a cryptogram. I wanted to incorporate a way for the puzzler to know if they'd got either one of the keys correct (the cryptogram won't decode unless both of the keys are correct).
So I naturally thought about hash functions, but the trouble with that is that if there's additional information about the key - as there was in this case - then it can be cracked by simply searching all the possible keys for a key which hashes to the same value.
In the case of the specific puzzle linked above, I saw that this was possible and explicitly said that it was an allowed way of finding the solution - but what if I didn't want to do that? What if I wanted to make a 'check' that couldn't be reverse-engineered by brute-force (or at least, not in a realistic timeframe).
Obviously one way to do that would be to use a good-quality hash function and withhold information about the keys that are being hashed, so that the search space for possible keys is very large. But the less information I give the puzzler about the keys, the harder it'll be for them to work out what the keys are when solving the puzzle through the 'normal' route! And that's not what I want.
So: what are some of the ways in which a puzzle incorporating multiple answers can allow the puzzler to confirm that individual answers are correct?
I can think of one example - a crossword, where each of the words provides a cross-check for some of the other words - but what are some other methods, and what are the pros and cons of each?