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
Форумы портала PHP.SU :: Версия для печати :: Оригинальный ключ
Форумы портала PHP.SU » » Вопросы новичков » Оригинальный ключ

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

1. Test11 - 18 Февраля, 2016 - 22:00:12 - перейти к сообщению
Как придумать оригинальный ключ посредством php, в строчке должны быть только буквы нижнего регистра и длина строчки не более 6 символов.
2. exlant - 18 Февраля, 2016 - 23:32:07 - перейти к сообщению
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.  
3. OrmaJever - 18 Февраля, 2016 - 23:51:40 - перейти к сообщению
я бы предложил еще лучший вариант, что бы 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));
4. TuX560 - 19 Февраля, 2016 - 08:37:51 - перейти к сообщению
Ну или так:
PHP:
скопировать код в буфер обмена
  1. function generateRandomString($length = 6, $pool = '0123456789abcdefghijklmnopqrstuvwxyz'){
  2.     return substr(str_shuffle(str_repeat($pool, $length)), 0, $length);
  3. }

Правда суть та же что и в первом ответе, а работать, ИМХО, будет дольше. Зато кода меньше Улыбка
5. Мелкий - 19 Февраля, 2016 - 09:48:56 - перейти к сообщению
Важно понимать, что все три представленных варианта кода - не CSPRNG и для серьёзных вещей (ключи, пароли, токены) применять не стоит.
Криптостойкий: http://php.net/manual/en/functio...random-bytes.php
6. TuX560 - 19 Февраля, 2016 - 09:52:47 - перейти к сообщению
Мелкий пишет:
Важно понимать, что все три представленных варианта кода - не CSPRNG и для серьёзных вещей (ключи, пароли, токены) применять не стоит.
Криптостойкий: http://php.net/manual/en/function.random-bytes.php

А в чем отличие от openssl_random_pseudo_bytes
7. Мелкий - 19 Февраля, 2016 - 10:04:52 - перейти к сообщению
Основное: random_bytes уже в ядре и всегда доступна.

Про openssl_random_pseudo_bytes есть пара слов и ссылка на интересный баг вот тут: https://github[dot]com/paragonie/ran[dot][dot][dot]master/ERRATA[dot]md
8. TuX560 - 19 Февраля, 2016 - 11:13:54 - перейти к сообщению
Мелкий пишет:
Основное: 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 Радость
9. OrmaJever - 19 Февраля, 2016 - 13:28:22 - перейти к сообщению
Мелкий пишет:
Основное: random_bytes уже в ядре и всегда доступна.

ну как сказать всегда)) только с 7 версии Улыбка
10. Мелкий - 19 Февраля, 2016 - 13:33:08 - перейти к сообщению
С 5.2 есть есть слой совместимости.

 

Powered by ExBB FM 1.0 RC1