Imho the best way to learn some crypto is learn the fundamental building blocks and then go and study already broken protocols and implementations. That should be enough to scare you in to the "assume everything I do is wrong and broken until proven otherwise" mindset (which could be a healthy mindset for programming in general imho)
Do not just go and learn the best current practices, because those aren't going to stand the tests of time.
Do not just go and learn the best current practices, because those aren't going to stand the tests of time.