Intereting Posts
Отправка изображений из элементов Canvas с использованием Ajax и PHP $ _FILES Как получить текущий идентификатор категории – OpenCart 2.0 CloudFlare и протоколирование посетителей IP-адресов через PHP PHP – много переменных или один массив? xdegug не может перейти к следующей строке в представлении php PHP DOMElement :: getElementsByTagName – В любом случае, чтобы получить сразу же подходящих детей? Рекомендации PHP: Im загружает массив $ GLOBALS с большим количеством информации, которая будет использоваться между моими php-страницами получить данные из базы данных, чтобы выбрать значение по умолчанию для раскрывающегося списка? Выполнять скрипт php каждые 40 миллисекунд? PHP – Управление данными из csv в цикле 400 SELECT запросов для заполнения сетки php Обработка значений unicode в параметрах GET с помощью PHP Замена Word без учета регистра Word Бит-маска в PHP для настроек? Вызов функции-члена функции () для не-объекта при вставке данных с использованием PHP mySQL simpleHTMLDOM

функции, используемые для шифрования пароля в php?

Я программирую PHP-сайт, который позволяет пользователям регистрироваться, я использую codeigniter php, и я хочу знать наилучшую функцию шифрования паролей и какую разницу между этой функцией?

Пароли почти никогда не должны быть зашифрованы. Вместо этого они должны быть односторонними хэшами.

Как правило, рекомендуется использовать bcrypt , так как он устойчив к принудительному форсированию, когда общие альтернативы, такие как md5 или sha1 терпят неудачу.

Использовать PHPass: http://www.openwall.com/phpass/

Предпочтительный (наиболее безопасный) метод хеширования, поддерживаемый phpass, – это bcrypt на основе Blowfish в стиле OpenBSD, также поддерживаемый нашим пакетом crypt_blowfish для общедоступного домена (для приложений C) и известный в PHP как CRYPT_BLOWFISH, с отступлением от BSDI-стиля Хэш, основанный на DES, известный в PHP как CRYPT_EXT_DES, и последнее средство отпадает на хеши паролей сота и переменной итерации на основе MD5, реализованные в самом phpass (также называемые переносимыми хешами).

Поместите его в application/third_party и используйте vanilla PHP для его загрузки (не загрузчик CI):

 require_once APPPATH.'third_party/phpass-0.3/PasswordHash.php'; $hash_iterations = 100; $portable_hashes = FALSE; $phpass = new PasswordHash($hash_iterations, $portable_hashes); 

Пример использования:

 // Hash a password before storing it in the DB $hashed_password = $phpass->HashPassword($user_input); // Check a given password against a stored hashed password $is_valid = $phpass->CheckPassword($user_input, $stored_hash_of_password); 

Это настраиваемый класс шифрования, который им используется в кодеригнере

 <?php class Encryption { var $skey = "EsUriEncKey2012"; public function safe_b64encode($string) { $data = base64_encode($string); $data = str_replace(array('+','/','='),array('-','_',''),$data); return $data; } public function safe_b64decode($string) { $data = str_replace(array('-','_'),array('+','/'),$string); $mod4 = strlen($data) % 4; if ($mod4) { $data .= substr('====', $mod4); } return base64_decode($data); } public function encode($value){ if(!$value){return false;} $text = $value; $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv); return trim($this->safe_b64encode($crypttext)); } public function decode($value){ if(!$value){return false;} $crypttext = $this->safe_b64decode($value); $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv); return trim($decrypttext); } } ?>