%PDF- %PDF-
Direktori : /lib64/python2.7/site-packages/Crypto/Cipher/ |
Current File : //lib64/python2.7/site-packages/Crypto/Cipher/PKCS1_v1_5.pyc |
� Bd\Rc @ s^ d Z d Z d d g Z d d l m Z d d l Td d l Z d d d � � YZ d � Z d S( s[ RSA encryption protocol according to PKCS#1 v1.5 See RFC3447__ or the `original RSA Labs specification`__ . This scheme is more properly called ``RSAES-PKCS1-v1_5``. **If you are designing a new protocol, consider using the more robust PKCS#1 OAEP.** As an example, a sender may encrypt a message in this way: >>> from Crypto.Cipher import PKCS1_v1_5 >>> from Crypto.PublicKey import RSA >>> from Crypto.Hash import SHA >>> >>> message = 'To be encrypted' >>> h = SHA.new(message) >>> >>> key = RSA.importKey(open('pubkey.der').read()) >>> cipher = PKCS1_v1_5.new(key) >>> ciphertext = cipher.encrypt(message+h.digest()) At the receiver side, decryption can be done using the private part of the RSA key: >>> From Crypto.Hash import SHA >>> from Crypto import Random >>> >>> key = RSA.importKey(open('privkey.der').read()) >>> >>> dsize = SHA.digest_size >>> sentinel = Random.new().read(15+dsize) # Let's assume that average data length is 15 >>> >>> cipher = PKCS1_v1_5.new(key) >>> message = cipher.decrypt(ciphertext, sentinel) >>> >>> digest = SHA.new(message[:-dsize]).digest() >>> if digest==message[-dsize:]: # Note how we DO NOT look for the sentinel >>> print "Encryption was correct." >>> else: >>> print "Encryption was not correct." :undocumented: __revision__, __package__ .. __: http://www.ietf.org/rfc/rfc3447.txt .. __: http://www.rsa.com/rsalabs/node.asp?id=2125. s $Id$t newt PKCS115_Cipheri����( t ceil_div( t *Nc B s; e Z d Z d � Z d � Z d � Z d � Z d � Z RS( sA This cipher can perform PKCS#1 v1.5 RSA encryption or decryption.c C s | | _ d S( s Initialize this PKCS#1 v1.5 cipher object. :Parameters: key : an RSA key object If a private half is given, both encryption and decryption are possible. If a public half is given, only encryption is possible. N( t _key( t selft key( ( s>