2012-06-24 11 views
6

Sto lavorando su un modulo di registrazione in cui ho bisogno di crittografare la password, ho sentito che mi consiglia di utilizzare la crittografia Blowfish per le password, Come si implementa una crittografia blowfish utilizzando PHP funzione crypt()? Inoltre, sto progettando di recuperare la password in seguito per effettuare il login.Utilizzo di Blowfish per la crittografia con PHP

+0

Dai un'occhiata a [questo] (http://www.chilkatsoft.com/p/php_blowfish.asp). –

+1

Non si dovrebbero "cifrare" le password, ma usare una funzione di hashing unidirezionale. Vedi: [Come usi bcrypt per le password di hashing in PHP?] (Http://stackoverflow.com/q/4795385/911182) – Herbert

+0

Leggi anche: [Come posso memorizzare le password dei miei utenti in modo sicuro?] (Http://stackoverflow.com/questions/1581610/how-can-i-store-my-users-passwords-safely/1581919#1581919) – Jacco

risposta

6

La risposta breve è usare crypt con un sale che inizia con i caratteri $ 2a $, a due cifre costo parametro, $, e 22 cifre dell'alfabeto ./0-9A-Za-z. Funziona solo su sistemi che supportano l'algoritmo di crittografia Blowfish. Tuttavia, PHP 5.3 lo implementa in modo nativo. Vedi PHP manual — crypt per maggiori dettagli.

Esempio:

crypt('rasmuslerdorf', '$2a$07$somesillystringforsalt') 

La stringa sale innesca l'algoritmo appropriato. Il parametro a due cifre costato è il logaritmo in base 2 del conteggio iterativo per l'algoritmo di hashing basato su Blowfish sottostante e deve essere compreso nell'intervallo [04 – 31]. Nell'esempio 07 indica all'algoritmo di utilizzare 2 o 128 iterazioni. Più alto è questo numero, più tempo ci vorrà per eseguire BUT, nel contesto delle password utente hashing, cioè una cosa GOOD GOOD.

This answer to a similar question spiega in modo più dettagliato cos'è BCrypt, come si riferisce a Blowfish e perché è necessario utilizzarlo. Ci sono molti altri related topics here on Stack Overflow.


phpass è un ottimo facile da usare framework hashing, password che funziona su tutti i sistemi, utilizzando Blowfish se ’ s supportati, e ricadendo ad altri algoritmi se ’ non lo è.

4

Non dovresti mai avere bisogno di blowfish per crittografare una password come questa. Il modulo di registrazione dovrebbe essere su HTTPS, che gestirà la difesa contro un attaccante sul filo. La password deve essere hash (non crittografata mai). bcrypt è una buona funzione di hash della password basata su blowfish. Ma ci sono molti post relativi alla memorizzazione sicura delle password su SO.

+1

+1 Probabilmente avrei dovuto citare HTTPS. – Herbert

+0

Dopo [vulnerabilità Heartbleed] (http://heartbleed.com/), credo che nulla sia completamente sicuro. – ontananza

Problemi correlati