• DE
  • ES
  • EN
  • NL

Cifrado

Los detalles de esta implementación

El cifrado AES-256 (CBC) que usamos aquí funciona de la siguiente manera:

  • Calcula el hash SHA-256 de la clave (resultando en una clave de 256 bits)
  • Calcula el hash SHA-256 del Vector de Inicialización y usa los primeros 16 bytes (128 bits) como IV para AES-CBC
  • Cifra el texto dado con la clave y el Vector de Inicialización de 256 bits AES en modo CBC (Cipher Block Chaining) usando la Web Crypto API, y este resultado estará cifrada con codificación Base64
  • Para descifrar, los datos de texto se decodifican de codificación Base64 y se descifran con las anteriormente mencionadas clave y Vector de Inicialización con 256-bit AES en modo CBC (Cipher Block Chaining)


AES-256 requiere una clave de exactamente 32 bytes (256 bits) y un IV de exactamente 16 bytes (128 bits). Como la clave y el IV proporcionados pueden tener cualquier longitud, primero se les aplica un hash SHA-256 para garantizar el tamaño correcto.

El cifrado se realiza completamente en el navegador utilizando la Web Crypto API. No se envían datos a un servidor.

N.B. espacios y similares al inicio y al final de la entrada no sean eliminados y por lo tanto son importantes para el descifrado con éxito!"

¿Qué es AES

Advanced Encryption Standard (AES), también conocido como Rijndael (pronunciado "Rain Doll" en inglés), es un esquema de cifrado por bloques adoptado como un estándar de cifrado por el gobierno de los Estados Unidos. El AES fue anunciado por el Instituto Nacional de Estándares y Tecnología (NIST) como FIPS PUB 197 de los Estados Unidos (FIPS 197) el 26 de noviembre de 2001 después de un proceso de estandarización que duró 5 años. Se transformó en un estándar efectivo el 26 de mayo de 2002. Desde 2006, el AES es uno de los algoritmos más populares usados en criptografía simétrica.

Fuente: Wikipedia

¿Cómo programmar en PHP?
<?php

	$key = 'my secret key';			// clave de cifrado
	$iv  = 'my initialisation vector';	// vector de inicialización (IV)

	$text = 'Esto es un texto';		// texto plano para cifrar

	// derivar clave de 256 bits del hash SHA-256
	$keyHash = hash('sha256', $key, true);

	// derivar IV de 128 bits del hash SHA-256 (primeros 16 bytes)
	$ivHash = substr(hash('sha256', $iv, true), 0, 16);

	// cifrar texto
	$result = openssl_encrypt($text, 'aes-256-cbc', $keyHash, OPENSSL_RAW_DATA, $ivHash);

	// resultado contiene string binaria, convertir
	// a ASCII con codificación Base64
	$result = base64_encode($result);

	// ahora $result contiene el string:
	// e.g. 'dGVzdA=='  (actual value depends on input)

Llama ahora al  966 365 799 , si necesitas otra herramienta!