Contenidos
- Combinaciones de la primera fila del teclado en Python
- Mostrar propiedades del sistema en Python
- Codificación y Decodificación en Base 64 en Python
- Obtención de listado de algoritmos hash disponibles en Python
- Hash SHA-512 en Python
- Generar un resumen HMAC-MD5 en Python
- Cálculo de Hash SHA-512 en Python con una semilla
- Cifrado y descifrado simple de palabras en Python
- Cifrado simétrico TDEA (Triple DES) en Python
- Cifrado simétrico AES en Python
- Almacenar claves privadas y públicas en Python
- Cifrar y descifrar utilizando clave pública en Python
- Cifrar y descifrar con clave secreta transmitida mediante cifrado asimétrico en Python
- Socket SSL en Python
Combinaciones de la primera fila del teclado en Python
1 2 3 4 5 6 7 8 |
from itertools import permutations def combinaciones_primera_fila(): primera_fila = "qwertyuiop" for comb in permutations(primera_fila): print(''.join(comb)) combinaciones_primera_fila() |
Mostrar propiedades del sistema en Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import os def mostrar_propiedades(): propiedades = { "java.class.path": "CLASSPATH", "java.home": "JAVA_HOME", "java.vendor": "java.vendor", "java.version": "java.version", "os.name": "os.name", "os.version": "os.version", "user.dir": "USERPROFILE", "user.home": "USERPROFILE", "user.name": "USERNAME" } for prop, env in propiedades.items(): print(f"{prop}: {os.getenv(env)}") mostrar_propiedades() |
Codificación y Decodificación en Base 64 en Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import base64 def codificar_base64(texto): mensaje_bytes = texto.encode('utf-8') base64_bytes = base64.b64encode(mensaje_bytes) base64_mensaje = base64_bytes.decode('utf-8') print(f"Codificado: {base64_mensaje}") def decodificar_base64(base64_mensaje): base64_bytes = base64_mensaje.encode('utf-8') mensaje_bytes = base64.b64decode(base64_bytes) mensaje = mensaje_bytes.decode('utf-8') print(f"Decodificado: {mensaje}") mensaje = "Hola, mundo!" base64_mensaje = "SG9sYSwgbXVuZG8h" codificar_base64(mensaje) decodificar_base64(base64_mensaje) |
Obtención de listado de algoritmos hash disponibles en Python
1 2 3 4 5 6 7 8 |
import hashlib def listar_algoritmos_hash(): algoritmos = hashlib.algorithms_guaranteed for alg in algoritmos: print(alg) listar_algoritmos_hash() |
Hash SHA-512 en Python
1 2 3 4 5 6 7 8 |
import hashlib def hash_sha512(texto): hash_object = hashlib.sha512(texto.encode()) hex_dig = hash_object.hexdigest() print(f"SHA-512: {hex_dig}") hash_sha512("Hola, mundo!") |
Generar un resumen HMAC-MD5 en Python
1 2 3 4 5 6 7 8 |
import hmac import hashlib def hmac_md5(texto, clave): h = hmac.new(clave.encode(), texto.encode(), hashlib.md5) print(f"HMAC-MD5: {h.hexdigest()}") hmac_md5("Hola, mundo!", "secreta") |
Cálculo de Hash SHA-512 en Python con una semilla
1 2 3 4 5 6 7 8 |
import hashlib def hash_sha512_con_semilla(texto, semilla): hash_object = hashlib.sha512(semilla.encode() + texto.encode()) hex_dig = hash_object.hexdigest() print(f"SHA-512 con semilla: {hex_dig}") hash_sha512_con_semilla("Hola, mundo!", "semilla") |
Cifrado y descifrado simple de palabras en Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
from cryptography.fernet import Fernet def cifrar_palabra(palabra): clave = Fernet.generate_key() cipher_suite = Fernet(clave) cifrado = cipher_suite.encrypt(palabra.encode()) print(f"Cifrado: {cifrado}") return clave, cifrado def descifrar_palabra(clave, cifrado): cipher_suite = Fernet(clave) descifrado = cipher_suite.decrypt(cifrado).decode() print(f"Descifrado: {descifrado}") clave, cifrado = cifrar_palabra("Hola, mundo!") descifrar_palabra(clave, cifrado) |
Cifrado simétrico TDEA (Triple DES) en Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from Crypto.Cipher import DES3 from Crypto.Random import get_random_bytes from Crypto.Util.Padding import pad, unpad def cifrar_tdea(texto): clave = DES3.adjust_key_parity(get_random_bytes(24)) cipher = DES3.new(clave, DES3.MODE_ECB) cifrado = cipher.encrypt(pad(texto.encode(), DES3.block_size)) print(f"Cifrado TDEA: {cifrado}") return clave, cifrado def descifrar_tdea(clave, cifrado): cipher = DES3.new(clave, DES3.MODE_ECB) descifrado = unpad(cipher.decrypt(cifrado), DES3.block_size).decode() print(f"Descifrado TDEA: {descifrado}") clave, cifrado = cifrar_tdea("Hola, mundo!") descifrar_tdea(clave, cifrado) |
Cifrado simétrico AES en Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
from Crypto.Cipher import AES from Crypto.Random import get_random_bytes from Crypto.Util.Padding import pad, unpad def cifrar_aes(texto): clave = get_random_bytes(32) cipher = AES.new(clave, AES.MODE_CBC) iv = cipher.iv cifrado = cipher.encrypt(pad(texto.encode(), AES.block_size)) print(f"Cifrado AES: {cifrado}") return clave, iv, cifrado def descifrar_aes(clave, iv, cifrado): cipher = AES.new(clave, AES.MODE_CBC, iv) descifrado = unpad(cipher.decrypt(cifrado), AES.block_size).decode() print(f"Descifrado AES: {descifrado}") clave, iv, cifrado = cifrar_aes("Hola, mundo!") descifrar_aes(clave, iv, cifrado) |
Almacenar claves privadas y públicas en Python
1 2 3 4 5 6 7 8 9 10 11 12 13 |
from Crypto.PublicKey import RSA def generar_claves(): key = RSA.generate(2048) private_key = key.export_key() with open("clave_privada.pem", "wb") as f: f.write(private_key) public_key = key.publickey().export_key() with open("clave_publica.pem", "wb") as f: f.write(public_key) generar_claves() |
Cifrar y descifrar utilizando clave pública en Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP def cifrar_con_clave_publica(mensaje, ruta_clave_publica): with open(ruta_clave_publica, "rb") as f: clave_publica = RSA.import_key(f.read()) cipher = PKCS1_OAEP.new(clave_publica) cifrado = cipher.encrypt(mensaje.encode()) print(f"Cifrado: {cifrado}") return cifrado def descifrar_con_clave_privada(cifrado, ruta_clave_privada): with open(ruta_clave_privada, "rb") as f: clave_privada = RSA.import_key(f.read()) cipher = PKCS1_OAEP.new(clave_privada) descifrado = cipher.decrypt(cifrado).decode() print(f"Descifrado: {descifrado}") cifrado = cifrar_con_clave_publica("Hola, mundo!", "clave_publica.pem") descifrar_con_clave_privada(cifrado, "clave_privada.pem") |
Cifrar y descifrar con clave secreta transmitida mediante cifrado asimétrico en Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP, AES from Crypto.Util.Padding import pad, unpad from Crypto.Random import get_random_bytes def cifrar_clave_secreta(clave_secreta, ruta_clave_publica): with open(ruta_clave_publica, "rb") as f: clave_publica = RSA.import_key(f.read()) cipher_rsa = PKCS1_OAEP.new(clave_publica) cifrado_clave_secreta = cipher_rsa.encrypt(clave_secreta) return cifrado_clave_secreta def descifrar_clave_secreta(cifrado_clave_secreta, ruta_clave_privada): with open(ruta_clave_privada, "rb") as f: clave_privada = RSA.import_key(f.read()) cipher_rsa = PKCS1_OAEP.new(clave_privada) clave_secreta = cipher_rsa.decrypt(cifrado_clave_secreta) return clave_secreta def cifrar_aes(texto, clave_secreta): cipher_aes = AES.new(clave_secreta, AES.MODE_CBC) iv = cipher_aes.iv cifrado = cipher_aes.encrypt(pad(texto.encode(), AES.block_size)) return iv, cifrado def descifrar_aes(iv, cifrado, clave_secreta): cipher_aes = AES.new(clave_secreta, AES.MODE_CBC, iv) descifrado = unpad(cipher_aes.decrypt(cifrado), AES.block_size).decode() return descifrado clave_secreta = get_random_bytes(32) cifrado_clave_secreta = cifrar_clave_secreta(clave_secreta, "clave_publica.pem") clave_secreta_descifrada = descifrar_clave_secreta(cifrado_clave_secreta, "clave_privada.pem") iv, cifrado = cifrar_aes("Hola, mundo!", clave_secreta_descifrada) descifrado = descifrar_aes(iv, cifrado, clave_secreta_descifrada) print(f"Cifrado: {cifrado}") print(f"Descifrado: {descifrado}") |
Socket SSL en Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import ssl import socket def crear_socket_ssl(): contexto = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM) servidor_ssl = contexto.wrap_socket(servidor, server_hostname="localhost") servidor_ssl.bind(('localhost', 8443)) servidor_ssl.listen(5) print("Servidor SSL escuchando en el puerto 8443...") conn, addr = servidor_ssl.accept() print(f"Conexión desde {addr}") conn.close() crear_socket_ssl() |