Caso práctico - Cifrado asimétrico

 Ejemplo practico de cifrado asimétrico


Nota: Tomado y diseñado por Freepik

En este caso práctico, se lleva a cabo un ejemplo para la empresa de de firmas digitales DesingSignatures, la cual requiere crear las llaves privadas y publicas para un banco que realiza prestamos a sus clientes.

La empresa utiliza Python y la libreria Crypto para la geneación de claves publicas y privadas mediante el algoritmo RSA, ya que esta libreria cuenta con algoritmos conocidos y probados, de esta manera, como se muestra a continuación generamos nuestras llaves en formato String.

import Crypto
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import binascii

# Se crea un número aleatorio con la ayuda de la libreria Crypto
randomGenerator = Crypto.Random.new().read

# Se generan la claves publica y privada de 1024 bits
privateKey = RSA.generate(1024, randomGenerator)
publicKey = privateKey.publickey()

# Se formatean las claves a UTF8
privateKey = privateKey.exportKey(format='DER')
publicKey = publicKey.exportKey(format='DER')

privateKey = binascii.hexlify(privateKey).decode('utf8')
publicKey = binascii.hexlify(publicKey).decode('utf8')

print(privateKey)
print(publicKey)

Luego de esto ya se puede enviar el mensaje encriptado con  la llave publica compartida
# Mensaje a encriptar
message = 'Mensaje del banco que sera codificado'
message = message.encode();

# Creamos el objeto para encriptar y se cifra el mensaje con la llave publica
cipher = PKCS1_OAEP.new(publicKey)
encryptedMessage = cipher.encrypt(message) # Mensaje encriptado

print(encryptedMessage)

y de esta manera el receptor puede desencriptar el mensaje haciendo uso de su llave privada

cipher = PKCS1_OAEP.new(privateKey)
message = cipher.decrypt(encryptedMessage) #Desencriptación del mensaje

print(message)

El ejemplo completo se puede encontrar en el siguiente enlace Colab

Bibliografía

Codigofacilito. (2019). Cifrado Asimétrico con Python. Mexico. Obtenido de https://www.youtube.com/watch?v=MkdlDwqvUHk


Comentarios