Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Формат записи
#1
Приветствую.

Как записать в таком формате пароль ?

Цитата:sha1:1000:E8pR8UY8WFo7sA78jn5AYNzvCOTtqkhA:vTR/68/Lc+yYSM7TYCLXFdLl4W1mhpCV
Ответ
#2
Дописал все, кроме этой ссайной шифровки. Не понимаю как оно устроено. Гуглил, сложна.

Объясните пж.
Ответ
#3
PBKDF HMAC SHA1 записанный в стиле APR.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#4
n3k0nation Написал:PBKDF HMAC SHA1 записанный в стиле APR.

Можно чуть подробнееSmile(лучше пример). Как загуглить?
Ответ
#5
http://php.net/manual/ru/function.hash-pbkdf2.php

Полученный хеш в base64. Там два хеша, но данные и параметры хеширования (кроме алгоритма и количества итераций) нам не узнать.
Ответ
#6
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:iterationsConfusedalt:password -> в записи бд

Цитата:sha1:1000ConfusedaiO2ojHlRWn1Jvj8qEEDPOw/aBs0oWoConfusedVae4V8IGRA69LzrOqN4yVHJpThgSAsU



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);

готово. осталось разобраться как подключить рандомную соль.
Ответ
#7
[SRC="php"]$salt = random_bytes(16);
[/SRC]


http://php.net/manual/ru/function.random-bytes.php

Или http://php.net/manual/ru/function.openss...-bytes.php если PHP < 7.
Ответ
#8
Вот шо наваял

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
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)