#!/usr/bin/env python


from Crypto.PublicKey import RSA
from Crypto import Random


def gen_key(nbits=1024):
    random_generator = Random.new().read
    key = RSA.generate(nbits, random_generator)
    return key

def check_key(key):
    print key.can_encrypt()
    print key.can_sign()
    print key.has_private()


def get_pubk(key):
    return key.publickey()


def encrypt(public_key, text, random):
    return public_key.encrypt(text, random)


def decrypt(data):
    return key.decrypt(enc_data)


if __name__ == '__main__':
    key = gen_key()

    check_key(key)

    public_key = get_pubk(key)

    text = 'abcdefgh'
    enc_data = encrypt(public_key, text, random=32)
    print enc_data

    dec_data = decrypt(enc_data)
    print dec_data