Quali opzioni sono disponibili nell'installazione predefinita e quali di terze parti come estensioni o framework?
P.S. Per crittografia intendo algoritmi che potrebbero essere decifrati, non crittografia unidirezionale come md5.
Come primitiva di crittografia userei AES. Sia AES-128 che AES-256 sono abbastanza forti. Numericamente AES-256 è più strong, ma è molto improbabile che AES-128 sia il punto più debole del tuo sistema.
Poiché php non sembra supportare una modalità di crittografia autenticata, è necessario crearla da sola. Userò HMAC-SHA-256, possibilmente troncato a 128 bit.
Per combinare queste operazioni vorrei:
mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)
MCRYPT_RIJNDAEL_128
anche con chiavi a 256 bit
PHP usa zero padding di default che non può essere rimosso senza ambiguità. Un riempimento migliore è PKCS # 7, ma dovrai aggiungerlo / rimuoverlo da solo. Esistono molte implementazioni esistenti per questo. Per decrittografare:
Questo è uno schema encrypt-then-MAC. Si consiglia di utilizzare chiavi diverse per MAC e crittografia. Consiglio di derivare entrambi da una chiave master.
Esistono standard crittografici, che sono indipendenti dalla lingua, quindi consiglio di utilizzare AES.
Modifica
Una libreria PHP che supporta questo è MYCRYPT . Dovresti usare AES con una dimensione della chiave a 128 o 256 bit (dal momento che vuoi la possibilità più strong, usa la 256) e dovresti anche usare la modalità OCB quando possibile (ci sono brevetti su di essa in modo incompleto) e in altro modo CBC. Maggiori informazioni sulle modalità possono essere trovate qui .
Leggi altre domande sui tag php encryption