I think there's a more fundamental cryptographic principle. Don't implement cryptography, unless you are an absolute top expert. Even then, think twice, and get another absolute top cryptography expert to check your working. Use a pre-existing cryptography package that has been written properly instead.
This article is clearly written for the experts who are implementing cryptography.
Recursive DNS lookup DoS attacks? You are doing work for some you don't know (random UDP packets)
The recent NTP DDoS amplification issues? Doing work for someone you don't know (Again. unauth-ed UDP packet trigging craploads of work)
Padded Oracle attacks in Crypto? Doing work for someone you don't know, and leaking data based on when something fails.
IP Source routing? Doing work for an untrusted party!
The moral of this story is verify what you have before you work on it. It all comes down to validating user input and user source.