Mã hóa mật mã RSA

Trong chương này, chúng tôi sẽ tập trung vào cách triển khai khác nhau của mã hóa mật mã RSA và các chức năng liên quan cho giống nhau. Bạn có thể tham khảo hoặc bao gồm tệp python này để triển khai thực hiện thuật toán mật mã RSA.

Các mô-đun được bao gồm cho thuật toán mã hóa như sau:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA512, SHA384, SHA256, SHA, MD5
from Crypto import Random
from base64 import b64encode, b64decode
hash = "SHA-256"

Chúng tôi đã khởi tạo giá trị băm là SHA-256 cho mục đích bảo mật tốt hơn. Chúng tôi sẽ sử dụng một hàm để tạo khóa mới hoặc một cặp khóa công khai và khóa riêng tư bằng cách sử dụng mã sau.

def newkeys(keysize):
   random_generator = Random.new().read
   key = RSA.generate(keysize, random_generator)
   private, public = key, key.publickey()
   return public, private
def importKey(externKey):
   return RSA.importKey(externKey)

Để mã hóa, hàm sau được sử dụng tuân theo thuật toán RSA:

def encrypt(message, pub_key):
   cipher = PKCS1_OAEP.new(pub_key)
   return cipher.encrypt(message)

Hai tham số là bắt buộc: messagepub_keytrong đó đề cập đến Khóa công khai. Khóa công khai được sử dụng để mã hóa và khóa riêng được sử dụng để giải mã.

Chương trình hoàn chỉnh cho quy trình mã hóa được đề cập dưới đây:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA512, SHA384, SHA256, SHA, MD5
from Crypto import Random
from base64 import b64encode, b64decode
hash = "SHA-256"

def newkeys(keysize):
   random_generator = Random.new().read
   key = RSA.generate(keysize, random_generator)
   private, public = key, key.publickey()
   return public, private

def importKey(externKey):
   return RSA.importKey(externKey)

def getpublickey(priv_key):
   return priv_key.publickey()

def encrypt(message, pub_key):
   cipher = PKCS1_OAEP.new(pub_key)
   return cipher.encrypt(message)