Lately I feel like I'm hitting a brick wall with cryptography. For example, I know what algorithms are secure but I can't tell you why as I don't understand the math behind it. I took the Cryptography 101 course on Stanford which used discrete probability. I didn't get very far into the course.
It's possible some of this just comes from me trying to fix the feeling ashamed problem but it's just making me miserable. What I ought to do is stop beating myself up.
My suggestion, it worked for me: buy a lot of paper, like, thousands of sheets. Take some books with the problems (and also with the solutions) then work through, maybe more than once. Don't say you haven't tried until you actually used all these sheets to write your own derivations of the solutions. If you once see the solution, you have to try the second time without looking. I could not learn by not really doing it, a lot, and I don't think anybody can. You can't just "read" it as you read history books, you have to "work" it.
A lot of people simply can't imagine themselves sitting and filling the papers with formulas (also in the comments here), but don't have problems spending months doing video games, for example. It's this "belief" that's limiting.
On another side, you need to have some kind of context too, but you have to find the interactions of the context and the actual work you do yourself. I like the "historical" context, because the big steps in math were traditionally not accidental. Archimedes invented the kind of "infinite" methods to calculate volume of some solids, and the methods remained forgotten, people remembering just results, Newton also invented a new math just to solve the problems he considered etc. For you, you have to adjust your steps to the knowledge you already have: if you know little, you can't avoid spending time learning the basic stuff. You have to work through, step by step.
Maybe also watch the documentary about Fermat's Last Theorem as an example of how it looks like doing math.
I could only do very basic math because I got bored, or my retention rate was very low. I'd go through the excercises but it wouldn't stick in my brain.
Eventually I figured out I just couldn't handle theoretical, like on the paper, stuff. So I started making up scenarios where what I were trying to learn would actually be applicable and create small programs that illustrated it, and suddenly I started to actually remember the stuff.
What I'm looking for is theoretical knowledge, and that's something else I struggle with. Can I still get that with more hands on experience?
For instance, something I find fascinating are One Time Pads. They're perfectly secure, given len(k) >= len(m); so the key must be the same length as the message.
As far as I understand, it's because each possible key may produce any possible message which I think is expressed:
Pr(x) = 1/|U|
Where U is the universe of all possible messages: {0, 1}^n where n = len(k)I probably wrote some mistakes there. I was able to pick this concept up, I think as it just made sense to me; maybe I was able to visualize it or I could just think it through and realize the conclusion made sense.