Recentemente PHP7.2 è stato rilasciato con la libreria Sodium inclusa per la crittografia.
Naturalmente c'erano già dei moduli di crittografia disponibili, anche lavorando con Zend Framework 2 o Symfony. Avevamo bisogno di un'implementazione per Zend Framework 3 e non volevamo affidarci alle nostre idee sui metodi di crittografia, abbiamo creato una ZF3 & Doctrine 2 module che usa implementazione della crittografia di paragonie .
Lo scopo, al momento, è di essere in grado di crittografare e decodificare automaticamente su lettura / scrittura di determinate proprietà, rilevate tramite un listener collegato a Doctrine ORM.
Il modo in cui lo abbiamo impostato è il seguente:
default
- Ricevi una stringa (non crittografare
null
) - Aggiungi in-code (config) salt alla stringa
- Utilizza la chiave privata in-code (config) per la crittografia
Ovviamente, non è il metodo più efficace per estendere una stringa, ma per assicurarsi di poter crittografare i dati contrassegnati con un tag utilizzando le impostazioni predefinite. Dati come il nome di una strada.
Opzioni
- Ricevi una stringa (non crittografare
null
) - Aggiungi 32 salmastra e / o pepe prima (e dopo) stringa (memorizzata in una tabella db separata, anche se i record sono collegati tramite chiave esterna)
- Aggiungi in-code (config) salt alla stringa
- Utilizza la chiave privata in-code (config) per la crittografia
Questo è il modulo che noi, in realtà solo io, abbiamo creato. L'effettiva implementazione della crittografia / decrittografia inizia su qui .
-
processFields
funzione - decide se cripta / decodifica, passa valori e, in decrittografia, prova un cast di tipi (per supportare il valore tipi ) per restituire il tipo di valore originale -
encrypt
funzione - decide se sale e / o pepe devono essere aggiunti in base alle opzioni passate. Quindi chiama "encrypt
" sull'adattatore. -
decrypt
funzione - decide se sale e / o pepe sono stati aggiunti in base alle opzioni passate. Rimuove dalla stringa per restituire la stringa originale da crittografare. - Adattatore Halite - Questa è la crittografia / decrittografia predefinita adattatore
Perché sto chiedendo?
Perché spero di aver capito tutto di più e di aver creato qualcosa di fantastico. Tuttavia, poiché non sono un esperto di crittologia e non abbiamo una tale persona in-house, ho pensato di chiedere qui, sperando di ottenere un feedback.
Il codice è fornito così com'è e open source. È estensibile e riutilizzabile in modo che altri utenti possano utilizzare lo stesso servizio, ma possono utilizzare il proprio adattatore di crittografia. Tuttavia, non vorrei che usassero qualcosa di sub-par.