Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Оригинальный ключ

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Test11
Отправлено: 18 Февраля, 2016 - 22:00:12
Post Id


Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Как придумать оригинальный ключ посредством php, в строчке должны быть только буквы нижнего регистра и длина строчки не более 6 символов.
 
 Top
exlant
Отправлено: 18 Февраля, 2016 - 23:32:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. function generateString($len=32) //генерируем случайную строку с заданной длиной
  3.     {
  4.         $str = 'abcdefghijklmnopqrstuvwxyz0123456789';
  5.         $str_len = strlen($str)-1;
  6.         $text = '';
  7.         while(strlen($text)<$len){
  8.             $text.=$str[mt_rand (0, $str_len)];
  9.         }
  10.         return $text;
  11.     }
  12.  
  13.  
 
 Top
OrmaJever Модератор
Отправлено: 18 Февраля, 2016 - 23:51:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




я бы предложил еще лучший вариант, что бы 2 рядом стоящих символа не повторялись
PHP:
скопировать код в буфер обмена
  1. function unique( $len = 6 ) {
  2.         $str = '';
  3.         for($i=0; $i<$len; ++$i) {
  4.                 do {
  5.                         $r = chr(mt_rand(97, 122));
  6.                 } while(isset($str[$i-1]) && $str[$i-1] == $r);
  7.                 $str .= $r;
  8.         }
  9.         return $str;
  10. }
  11. var_dump(unique(6));


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
TuX560
Отправлено: 19 Февраля, 2016 - 08:37:51
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Дек. 2015  


Помог: 3 раз(а)




Ну или так:
PHP:
скопировать код в буфер обмена
  1. function generateRandomString($length = 6, $pool = '0123456789abcdefghijklmnopqrstuvwxyz'){
  2.     return substr(str_shuffle(str_repeat($pool, $length)), 0, $length);
  3. }

Правда суть та же что и в первом ответе, а работать, ИМХО, будет дольше. Зато кода меньше Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 19 Февраля, 2016 - 09:48:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Важно понимать, что все три представленных варианта кода - не CSPRNG и для серьёзных вещей (ключи, пароли, токены) применять не стоит.
Криптостойкий: http://php.net/manual/en/functio...random-bytes.php


-----
PostgreSQL DBA
 
 Top
TuX560
Отправлено: 19 Февраля, 2016 - 09:52:47
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Дек. 2015  


Помог: 3 раз(а)




Мелкий пишет:
Важно понимать, что все три представленных варианта кода - не CSPRNG и для серьёзных вещей (ключи, пароли, токены) применять не стоит.
Криптостойкий: http://php.net/manual/en/function.random-bytes.php

А в чем отличие от openssl_random_pseudo_bytes
 
 Top
Мелкий Супермодератор
Отправлено: 19 Февраля, 2016 - 10:04:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Основное: random_bytes уже в ядре и всегда доступна.

Про openssl_random_pseudo_bytes есть пара слов и ссылка на интересный баг вот тут: https://github[dot]com/paragonie/ran[dot][dot][dot]master/ERRATA[dot]md


-----
PostgreSQL DBA
 
 Top
TuX560
Отправлено: 19 Февраля, 2016 - 11:13:54
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Дек. 2015  


Помог: 3 раз(а)




Мелкий пишет:
Основное: random_bytes уже в ядре и всегда доступна.

Про openssl_random_pseudo_bytes есть пара слов и ссылка на интересный баг вот тут: https://github.com/paragonie/random_compat/blob/master/ERRATA.md

Спасибо, буду иметь ввиду
(Добавление)
Мелкий пишет:
Важно понимать, что все три представленных варианта кода - не CSPRNG и для серьёзных вещей (ключи, пароли, токены) применять не стоит.
Криптостойкий: http://php.net/manual/en/function.random-bytes.php

И тут я вспомнил, что мой вариант основан на увиденном методе генерации ключа для шифрования всего и вся в laravel 5.1 Радость
 
 Top
OrmaJever Модератор
Отправлено: 19 Февраля, 2016 - 13:28:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Мелкий пишет:
Основное: random_bytes уже в ядре и всегда доступна.

ну как сказать всегда)) только с 7 версии Улыбка


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Мелкий Супермодератор
Отправлено: 19 Февраля, 2016 - 13:33:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




С 5.2 есть есть слой совместимости.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB