HEX
Server: Apache/2.4.65 (Ubuntu)
System: Linux ielts-store-v2 6.8.0-1036-gcp #38~22.04.1-Ubuntu SMP Thu Aug 14 01:19:18 UTC 2025 x86_64
User: root (0)
PHP: 7.2.34-54+ubuntu20.04.1+deb.sury.org+1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: //snap/google-cloud-cli/394/platform/gsutil/third_party/rsa/doc/compatibility.rst
Compatibility with standards
============================

.. index:: OpenSSL
.. index:: compatibility

Python-RSA implements encryption and signatures according to PKCS#1
version 1.5. This makes it compatible with the OpenSSL RSA module.

Keys are stored in PEM or DER format according to PKCS#1 v1.5. Private
keys are compatible with OpenSSL. However, OpenSSL uses X.509 for its
public keys, which are not supported.

Encryption:
    PKCS#1 v1.5 with at least 8 bytes of random padding

Signatures:
    PKCS#1 v1.5 using the following hash methods:
    MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512

Private keys:
    PKCS#1 v1.5 in PEM and DER format, ASN.1 type RSAPrivateKey

Public keys:
    PKCS#1 v1.5 in PEM and DER format, ASN.1 type RSAPublicKey

:ref:`VARBLOCK <bigfiles>` encryption:
    Deprecated in Python-RSA 3.4 and removed from Python-RSA 4.0.
    Was Python-RSA only, not compatible with any other known application.

.. _openssl:

Interoperability with OpenSSL
-----------------------------

You can create a 512-bit RSA key in OpenSSL as follows::

    openssl genrsa -out myprivatekey.pem 512

To get a Python-RSA-compatible public key from OpenSSL, you need the
private key first, then run it through the ``pyrsa-priv2pub``
command::

    pyrsa-priv2pub -i myprivatekey.pem -o mypublickey.pem

Encryption and decryption is also compatible::

    $ echo hello there > testfile.txt
    $ pyrsa-encrypt -i testfile.txt -o testfile.rsa publickey.pem
    $ openssl rsautl -in testfile.rsa -inkey privatekey.pem -decrypt
    hello there

Interoperability with PKCS#8
----------------------------

The standard PKCS#8 is widely used, and more complex than the PKCS#1
v1.5 supported by Python-RSA. In order to extract a key from the
PKCS#8 format you need an external tool such as OpenSSL::

    openssl rsa -in privatekey-pkcs8.pem -out privatekey.pem

You can then extract the corresponding public key as described above.