You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1006 B
32 lines
1006 B
from Crypto.Cipher import DES3
|
|
from Crypto.Random import get_random_bytes
|
|
import base64
|
|
import os
|
|
|
|
mensajeOriginal = "Visita GALICIA: el paraíso".encode("utf-8")
|
|
print ("Mensaja original:", mensajeOriginal.decode("utf-8"))
|
|
|
|
while True:
|
|
try:
|
|
key = DES3.adjust_key_parity(get_random_bytes(24))
|
|
break
|
|
except ValueError:
|
|
pass
|
|
iv = os.urandom(8) #generamos aleatoriamente un iv
|
|
|
|
#instanciamos un nuevo objeto DES
|
|
cipher = DES3.new(key, DES3.MODE_CFB,iv=iv)
|
|
#ciframos los datos
|
|
bytesCifrados = cipher.encrypt(mensajeOriginal)
|
|
print ("Bytes cifrados: ", bytesCifrados)
|
|
#para imprimir una mejor representación
|
|
mensajeCifrado = base64.b64encode(bytesCifrados).decode("utf-8")
|
|
print ("Mensaje Cifrado:", mensajeCifrado)
|
|
|
|
#es necesario un nuevo objeto para descifrar
|
|
cipher = DES3.new(key, DES3.MODE_CFB,iv = iv)
|
|
#desciframos usando la misma key e iv
|
|
mensajeDescifrado = cipher.decrypt(bytesCifrados)
|
|
print ("Mensaje: ", mensajeDescifrado.decode())
|
|
|
|
assert (mensajeOriginal == mensajeDescifrado) |