You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.5 KiB
39 lines
1.5 KiB
Introduction & history
|
|
======================
|
|
|
|
Python-RSA's history starts in 2006. As a student assignment for the
|
|
University of Amsterdam we wrote a RSA implementation. We chose Python
|
|
for various reasons; one of the most important reasons was the
|
|
`unlimited precision integer`_ support.
|
|
|
|
.. _`unlimited precision integer`:
|
|
https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex
|
|
|
|
It started out as just a module for calculating large primes, and RSA
|
|
encryption, decryption, signing and verification using those large
|
|
numbers. It also included generating public and private keys. There
|
|
was no functionality for working with byte sequences (such as files)
|
|
yet.
|
|
|
|
Version 1.0 did include support for byte sequences, but quite clunky,
|
|
mostly because it didn't support 0-bytes and thus was unsuitable for
|
|
binary messages.
|
|
|
|
Version 2.0 introduced a lot of improvements by Barry Mead, but still
|
|
wasn't compatible with other RSA implementations and used no random
|
|
padding.
|
|
|
|
Version 3.0 introduced PKCS#1 v1.5 functionality, which resulted in
|
|
compatibility with OpenSSL and many others implementing the same
|
|
standard. Random padding was introduced that considerably increased
|
|
security, which also resulted in the ability to encrypt and decrypt
|
|
binary messages.
|
|
|
|
Key generation was also improved in version 3.0, ensuring that you
|
|
really get the number of bits you asked for. At the same time key
|
|
generation speed was greatly improved. The ability to save and load
|
|
public and private keys in PEM and DER format as also added.
|
|
|
|
|
|
|