openssl_encrypt mcrypt_encrypt encrypt decrypt alternative php encryption mcrypt

mcrypt_encrypt - php mcrypt deprecated



PHP: Mcrypt: ¿qué modo? (1)

mcrypt realidad implementa más modos que los listados , puede usar los nombres de cadena para acceder a ellos:

  • cbc - modo CBC
  • cfb - modo CFB de 8 bits;
  • ncfb - modo CFB de tamaño de bloque;
  • nofb - modo OFB (no ofb );
  • ctr - modo CTR .

Los modos difieren en los detalles de implementación, por lo que su idoneidad depende de sus datos y su entorno.

Relleno :

  • El modo CBC solo cifra los bloques completos, por lo que mcrypt el texto sin formato con cero bytes a menos que implemente su propio relleno.

  • Los modos CFB , OFB y CTR cifran mensajes de cualquier longitud.

Vector de inicialización :

  • Los modos CBC y CFB requieren una IV aleatoria (no use MCRYPT_RAND ).

  • El modo OFB simplemente requiere una IV única (por ejemplo, un contador global, tal vez la clave primaria de la base de datos si las filas nunca se modifican o eliminan).

  • El CTR requiere que cada bloque de contador sea único (no solo el IV del mensaje, que es el primer bloque de contador, sino el resto, formado por el incremento del bloque contador en 1 por cada bloque del mensaje).

Más información en las recomendaciones de NIST .

Existen diferencias en el rendimiento que no deberían tener importancia en PHP, como por ejemplo si el cifrado o el descifrado se pueden paralelizar y cuántas iteraciones de cifrado se usan por bloque (generalmente, uno, pero el modo CFB de 16 en 8 bits).

Existen diferencias en la maleabilidad que no deberían tener importancia porque aplicará un MAC .

Y puede haber diferencias en su seguridad, pero para eso debe consultar a un criptógrafo .

He estado probando los diversos modos disponibles en la función mcrypt de PHP. ECB es el modo utilizado en la mayoría de los tutoriales, pero no es recomendado tanto por la página vinculada como por algunos usuarios , así que creo que CBC o CFB deberían funcionar.

La documentación de PHP no es demasiado gorda en su comparación de los diferentes modos disponibles para mcrypt y en su lugar se refiere al libro de ''Applied Cryptography by Schneier'' , que no estoy muy dispuesto a comprar por el momento.

Entonces, ¿cuál de los mcrypt mcrypt quiero usar y por qué?