Общие сведения
RSA представляет собой алгоритм шифрования с ассиметричным ключем. Алгоритмы шифрования с ассиметричным ключем имеют разные ключи для шифрования и расшифрования сообщения. Эти ключи связаны друг с другом особым образом. Зная один из них, вычислить второй очень трудоемкая задача.
Как правило, перед обменом секретными данными, стороны договариваются о ключах. Например, Алиса создает пару ключей A и B, а Боб создает C и D. Причем, ключ A можно использовать для шифрования сообщения, а ключ B можно использоваться для расшифровки сообщения, которое зашифровано ключем A. Аналогично в случае с Бобом.
Дальше Алиса отсылает ключ B Бобу, а Боб в свою очеред отсылает ключ D Алисе. Теперь Алиса, зная ключ D, может слать Бобу сообщения, а Боб, зная ключ B, может писать Алисе. Если кто-то и прослушивал канал связи, то сообщения, которые он споймал - абсолютно бесполезны. Он может зашифровать свое сообщение, но прочитать чужое не может. В этом и прелесть ассиметричных алгоритмов. Ключ для расшифровки никогда не покидает пределов машины.
В алгоритме RSA всюду используется модульная арифметика. Это значит, что все числа, которые используются в алгоритме являются целочисленными. Более того, числа как правило огромные. В двоичной системе числа могут занимать 1000 знаков и более (300+ цифр в десятичной системе)