¿Qué opciones están disponibles en la instalación predeterminada y cuáles son las de terceros, como extensiones o marcos?
P.S. Por criptografía me refiero a los algoritmos que se pueden descifrar, no al cifrado unidireccional como md5.
Como primitivo de cifrado utilizaría AES. Tanto AES-128 como AES-256 son lo suficientemente fuertes. Numéricamente AES-256 es más fuerte, pero es muy poco probable que AES-128 sea el punto más débil de su sistema.
Dado que php no parece admitir un modo de cifrado autenticado, debe crearlo usted mismo. Usaría HMAC-SHA-256, posiblemente truncado a 128 bits.
Para combinar estas operaciones yo:
mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)
MCRYPT_RIJNDAEL_128
incluso con claves de 256 bits
PHP utiliza cero relleno por defecto que no se puede eliminar de forma inequívoca. Un mejor relleno es PKCS # 7, pero deberá agregarlo o eliminarlo usted mismo. Hay muchas implementaciones existentes para eso. Para descifrar:
Este es un esquema de cifrado y luego MAC. Se recomienda utilizar diferentes claves para MAC y cifrado. Recomiendo derivar ambos de una clave maestra.
Hay estándares criptográficos, que son independientes del idioma, por lo tanto, aconsejo usar AES.
EDIT
Una biblioteca php que admite esto es MYCRYPT . Debería usar AES con un tamaño de clave de 128 o 256 bits (ya que desea la posibilidad más fuerte, use el 256) y también debe usar el modo OCB cuando sea posible (hay patentes en él de manera imprevista) y, por lo demás, CBC. Puede encontrar más información sobre los modos aquí .
Lea otras preguntas en las etiquetas encryption php