I find the description of the RSA math pretty confusing. And I'm saying that with a minor in math and a CS degree specializing in security; I've don't this before, just not in a while.<p>For example:<p>>In order to generate e, we'll need to find a random prime number that has a greatest common divisor (GCD) of 1 in relation to ϕ(n).<p>How can a prime number have any divisor that isn't 1, let alone a gcd? Either that's mistaken, or it's unnecessary to state.<p>There's also no explanation of what purpose the totient value is. The author simply states it's needed, but not what value it provides.<p>In short, it feels like it's written for people who already know the answers, not for people trying to learn.
A better title would be "How RSA does not work".<p>I'm a bit annoyed by many of these crypto introductions that explain textbook RSA, which is not something anyone uses in a real world application. It is crucial for RSA to use a padding mode and that's where all the fun comes in and what decides about how secure the thing you're building is.
Noticed that this page worked on Chrome, but not on FF.<p>On FF (57.0.2) Windows 7, the message is as below:<p>Error 1010 Ray ID: 3cc3b2b85d0b9300 • 2017-12-12 21:15:17 UTC
Access denied
What happened?<p>The owner of this website (fly-io.ghost.io) has banned your access based on your browser's signature (3cc3b2b85d0b9300-ua48).<p>Not sure if the author or website owner had a beef with FF.
Can someone explain this section some more<p>>Considering that we need a distinct key for each individual, that exchanging keys with each person would be a significant computational burden, and that there are more cryptographic functions needed than simply exchanging keys, new methods arose.<p>Isn't this exactly what RSA does, exchanging a private symmetric key with asymmetric crypto? The next paragraph makes it seem like RSA does something different.
I just made a quick Python implementation (3.6+ only as it uses the secrets module)<p><a href="https://github.com/mcdallas/rsa" rel="nofollow">https://github.com/mcdallas/rsa</a>