Home | History | Annotate | Download | only in doc
      1 Introduction & history
      2 ======================
      3 
      4 Python-RSA's history starts in 2006. As a student assignment for the
      5 University of Amsterdam we wrote a RSA implementation. We chose Python
      6 for various reasons; one of the most important reasons was the
      7 `unlimited precision integer`_ support.
      8 
      9 .. _`unlimited precision integer`:
     10     https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex
     11 
     12 It started out as just a module for calculating large primes, and RSA
     13 encryption, decryption, signing and verification using those large
     14 numbers. It also included generating public and private keys. There
     15 was no functionality for working with byte sequences (such as files)
     16 yet.
     17 
     18 Version 1.0 did include support for byte sequences, but quite clunky,
     19 mostly because it didn't support 0-bytes and thus was unsuitable for
     20 binary messages.
     21 
     22 Version 2.0 introduced a lot of improvements by Barry Mead, but still
     23 wasn't compatible with other RSA implementations and used no random
     24 padding.
     25 
     26 Version 3.0 introduced PKCS#1 v1.5 functionality, which resulted in
     27 compatibility with OpenSSL and many others implementing the same
     28 standard. Random padding was introduced that considerably increased
     29 security, which also resulted in the ability to encrypt and decrypt
     30 binary messages.
     31 
     32 Key generation was also improved in version 3.0, ensuring that you
     33 really get the number of bits you asked for. At the same time key
     34 generation speed was greatly improved. The ability to save and load
     35 public and private keys in PEM and DER format as also added.
     36 
     37 
     38 
     39