Сообщений: 136
Тем: 28
Зарегистрирован: Dec 2012
Репутация:
42
Приветствую.
Как записать в таком формате пароль ?
Цитата:sha1:1000:E8pR8UY8WFo7sA78jn5AYNzvCOTtqkhA:vTR/68/Lc+yYSM7TYCLXFdLl4W1mhpCV
Сообщений: 136
Тем: 28
Зарегистрирован: Dec 2012
Репутация:
42
Дописал все, кроме этой ссайной шифровки. Не понимаю как оно устроено. Гуглил, сложна.
Объясните пж.
Сообщений: 2,455
Тем: 53
Зарегистрирован: Apr 2010
Репутация:
19,728
PBKDF HMAC SHA1 записанный в стиле APR.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Сообщений: 136
Тем: 28
Зарегистрирован: Dec 2012
Репутация:
42
n3k0nation Написал:PBKDF HMAC SHA1 записанный в стиле APR.
Можно чуть подробнее
(лучше пример). Как загуглить?
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
http://php.net/manual/ru/function.hash-pbkdf2.php
Полученный хеш в base64. Там два хеша, но данные и параметры хеширования (кроме алгоритма и количества итераций) нам не узнать.
Сообщений: 136
Тем: 28
Зарегистрирован: Dec 2012
Репутация:
42
06-22-2018, 04:45 PM
(Сообщение последний раз редактировалось: 06-23-2018, 01:44 AM ccc.)
PHP код:
<?php
if ( empty($errors)) { // если нет ошибок записываем данные в mysql
$user = R::dispense('accounts');
$user -> login = $data['username'];
$user -> l2email = $data['email'];
$salt = openssl_random_pseudo_bytes(24);
$user -> password = base64_encode(hash_pbkdf2('sha1', $data['password'], base64_decode($salt), 1000, 24, true));
R::store($user);
Нагуглил... Исправьте в человеческий вид.
Как должно быть algo:iterations
alt:password -> в записи бд
Цитата:sha1:1000aiO2ojHlRWn1Jvj8qEEDPOw/aBs0oWoVae4V8IGRA69LzrOqN4yVHJpThgSAsU
PHP код:
<?php
$salt = 'saiO2ojHlRWn1Jvj8qEEDPOw/aBs0oWo';
$hash = base64_encode(hash_pbkdf2('sha1', $data['password'], base64_decode($salt), 1000, 24, true));
$user -> password = "sha1:1000:$salt:$hash";
R::store($user);
готово. осталось разобраться как подключить рандомную соль.
Сообщений: 136
Тем: 28
Зарегистрирован: Dec 2012
Репутация:
42
Вот шо наваял
PHP код:
<?php
function getSalt()
{
$charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$randStringLen = 30;
$rand = "";
for ($i = 0; $i < $randStringLen; $i++) {
$rand .= $charset[mt_rand(0, strlen($charset) - 1)];
}
return $rand;
}
$salt = getSalt();
//$salt = random_bytes(24);
$hash = base64_decode(hash_pbkdf2('sha1', $data['password'], base64_decode($salt), 1000, 24, true));
$user->password = "sha1:1000:$salt:$hash";
(R::store($user));
Вот эту ошибку периодически получаю в процессе выполнения скрипта, или вообще ничего.
Цитата:USER ERROR: SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value
То есть данные не поступают до бд.
show variables like '%charac%';
Цитата:+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
show variables like '%colla%';
Цитата:+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+----------------------+--------------------+
3 rows in set (0.001 sec)
Таблица акков, а именно паролей тоже в кодировке utf8mb4, utf8mb4_unicode_ci