¿Qué es la Criptografía?
La criptografía es la disciplina que estudia técnicas para proteger la información mediante el uso de algoritmos matemáticos que convierten los datos en un formato ilegible sin la clave adecuada.
Ejemplo de Cifrado Simétrico con AES en Python
Este código muestra cómo cifrar y descifrar un mensaje usando la biblioteca `pycryptodome`:
from Crypto.Cipher import AES
import base64
# Clave y texto a cifrar (la clave debe ser de 16, 24 o 32 bytes)
clave = b'esta_es_una_clave_segura!'
texto = b'Mensaje secreto'
# Cifrado con AES en modo ECB
cipher = AES.new(clave[:16], AES.MODE_ECB)
texto_cifrado = cipher.encrypt(texto.ljust(16)) # Padding
texto_cifrado_b64 = base64.b64encode(texto_cifrado).decode()
print(f"Texto cifrado: {texto_cifrado_b64}")
En este ejemplo, se usa el algoritmo AES en modo ECB para cifrar un mensaje de manera segura.
Ejemplo de Cifrado Asimétrico con RSA en Python
Este código muestra cómo cifrar y descifrar un mensaje usando la biblioteca `pycryptodome` con el algoritmo RSA:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Random import get_random_bytes
import base64
# Generación de claves RSA
clave_privada = RSA.generate(2048)
clave_publica = clave_privada.publickey()
# Exportar las claves
clave_privada_pem = clave_privada.export_key()
clave_publica_pem = clave_publica.export_key()
# Cifrado del mensaje con la clave pública
mensaje = b'Mensaje secreto para cifrado asimétrico'
cipher = PKCS1_OAEP.new(clave_publica)
mensaje_cifrado = cipher.encrypt(mensaje)
# Codificación base64 del mensaje cifrado
mensaje_cifrado_b64 = base64.b64encode(mensaje_cifrado).decode()
# Descifrado del mensaje con la clave privada
cipher_privada = PKCS1_OAEP.new(clave_privada)
mensaje_descifrado = cipher_privada.decrypt(base64.b64decode(mensaje_cifrado_b64))
print(f"Texto cifrado: {mensaje_cifrado_b64}")
print(f"Texto descifrado: {mensaje_descifrado.decode()}")
En este ejemplo, se utiliza el algoritmo RSA para cifrar y descifrar un mensaje de manera segura mediante el uso de claves pública y privada.
Ejemplo de Hashing con SHA-256
Este código muestra cómo generar un hash seguro utilizando el algoritmo SHA-256:
import hashlib
mensaje = "Mensaje seguro"
hash_sha256 = hashlib.sha256(mensaje.encode()).hexdigest()
print(f"Hash SHA-256: {hash_sha256}")
El hashing permite almacenar contraseñas y verificar la integridad de los datos sin necesidad de descifrarlos.
Conclusión
La criptografía es un pilar fundamental en la seguridad del software, protegiendo los datos contra accesos no autorizados y garantizando la privacidad de la información.