Codificar y Decodificar en Rijndael / AES
Python
Publicado el 10 de Febrero del 2016 por Xve (294 códigos)
6.369 visualizaciones desde el 10 de Febrero del 2016
Este código de ejemplo muestra como codificar un texto con Rijndael / AES a 128 bits
from Crypto.Cipher import AES
import base64
import os
key = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15\x16"
iv = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15\x16"
replace_plus = "BIN00101011BIN"
BLOCK_SIZE = 16
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) \
* chr(BLOCK_SIZE - len(s) % BLOCK_SIZE)
unpad = lambda s : s[0:-ord(s[-1])]
# encrypta con AES y codifica con base64
def EncodeAES(s):
c = AES.new(key, AES.MODE_CBC, iv)
s = pad(s)
s = c.encrypt(s)
s = base64.b64encode(s)
return s.replace("+", replace_plus)
def DecodeAES(enc):
c = AES.new(key, AES.MODE_CBC, iv)
enc = enc.replace(replace_plus, "+")
enc = base64.b64decode(enc)
enc = c.decrypt(enc)
return unpad(enc)
texto = "la casa azul"
# encriptar
encoded = EncodeAES(texto)
print 'Cadena encriptada:', encoded
# desencriptar
decoded = DecodeAES(encoded)
print 'Cadena desencriptada:', decoded
Comentarios sobre la versión: Versión 1.0 (2)