четвъртък, 28 април 2016 г.

Създаване на случайна генерирана парола

Лесно е да се създаде случайна генерирана парола. Първо, бих искал да поясня, че този метод не се ограничава само до генериране на случайни пароли, но също може да се използва за генериране на случаен низ за други цели.

Създаване на случайна генерирана паролаЗа да опростим нещата, трябва да създадете функция, която ви позволява случайно да генерира парола, без да задръства съществуващия код с допълнителни линии. Ще разделим този урок в два различни сегмента. Първият сегмент ще бъде основен метод, който позволява на
разработчика да определи дължината на низа.
Вторият сегмент ще бъде по-напреднал метод, който позволява на разработчика да определи дължината, както и сложността на низа.

Основна версия - Буквено-цифрова парола

Тази основна версия ще генерира случайна парола, която е alphanumberic (направена от букви и цифри). За да се запази съществуващия код и да бъде по-малко претрупан, ще създадем една PHP функция, наречена generatePassword (). Това е функцията, която трябва да копирате на върха на вашата PHP file after <?php.
CODE

  1. <?php
  2. function generatePassword($length=10) {
  3. $chars = "023456789abcdefghijkmnopqrstuvwxyz";
  4. $i = 0;
  5. $str = "";
  6. while ($i<=$length) {
  7. $str .= $chars[mt_rand(0,strlen($chars))];
  8. $i++;
  9. }
  10. return $str;
  11. }
  12. ?>
Ще обясня няколко основни функции, които са били използвани в горният код. while() функцията продължава по линия на код, който избира един символ, дължината на низа е определена сума. mt_rand () се използва, за да изберете случаен символа от списъка вътре в променливата $ . strlen () се използва за определяне на размера на възможните символи от $ символа.
Стандартната дължина на случаен низ е 10 знака, обаче може да се променя в движение. С цел да се покаже произволен низ, можете да използвате този код по-долу:
CODE
  1. <?php
  2. echo generatePassword(); // Displays a 10 character string
  3. echo generatePassword(7); // Displays a 7 character string
  4. ?>
Така че, ако използвате кода от линия 2, ще покаже низ с дължина 10 символа. Ако използвате кода от Ред 3, ще покаже низ от 7 символа, защото това е дължината, която сте дефинирали при изпълнението на функцията.
Така че, вие имате мощна функция за създаването на случайна буквено-цифрова (или низ) парола с желаната дължина. В следващия сегмент, ще видите, как да направим основна функция за много по-мощна парола.

Усъвършенствана версия - няколко нива на сложност

За тези от вас, които искат да имат повече контрол и по-голяма сигурност тази подобрена версия отговаря на целта. Тази усъвършенствана версия използва основните функции и структура на основната версия, обаче има няколко допълнения за неговото подобряване.
За да използвате тази версия, отстранете функцията, която сте добавили в началото на файла в основната версия и да я замените с нова функция, написана по-долу:
CODE
  1. <?php
  2. function generatePassword($level=3,$length=10) {
  3. $chars[1] = "1234567890";
  4. $chars[2] = "abcdefghijklmnopqrstuvwxyz";
  5. $chars[3] = "023456789abcdefghijkmnopqrstuvwxyz";
  6. $chars[4] = "23456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";
  7. $chars[5] =
  8. "23456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ!@#$%^&*?=+-_";
  9. $i = 0;
  10. $str = "";
  11. while ($i<=$length) {
  12. $str .= $chars[$level][mt_rand(0,strlen($chars[$level]))];
  13. $i++;
  14. }
  15. return $str;
  16. }
  17. echo generatePassword();
  18. ?>
Единственото нещо, което променихме е, че въведохме различни нива на сложност, чрез добавяне на възможно повече символи във всяко ниво. По-долу е описано всяко възможно ниво.
  • Ниво 1 - Цифров Pin
  • Ниво 2 - Азбучна парола
  • Ниво 3 - Буквено-цифрена парола (по подразбиране)
  • Ниво 4 - Буквено-цифрови w / главни букви
  • Ниво 5 - Буквено-цифрови w/ главни букви и символи
Настройката по сложност е ниво 3, която е същата като основната версия. Можете лесно да определите нивото на сложност и дължината на низа с помощта на примерите по-долу:
CODE
  1. <?php
  2. echo generatePassword(); // Level 3 string with 10 characters
  3. echo generatePassword(5,12); // Level 5 string with 12 characters
  4. ?>
Линия 2 ще покаже нивото на [3] с буквено-цифров низ от 10 знака. Ред 3 ще покаже [ниво 5] буквено-цифров (w / главни букви и символи), който е с дължина 12 символа.

Бързи съвети

Може би сте забелязали, че няколко знака са изчезнали от списъка на възможните символи. Това не е правописна грешка, аз нарочно отстраних някои символи, тъй като те си приличат и могат да бъдат объркани един с друг. Долу е даден списък на отстранените символи:
  • Премахнато L (малка буква L) и 1 (един) от нива 3, 4 и 5

  • Премахнато O (главна буква О) и 0 (нула) от нива 4 и 5
Ако желаете да получите случаен низ на променлива, можете да използвате примера по-долу:
CODE
  1. <?php
  2. $username = $_POST['username'];
  3. $password = generatePassword();
  4. echo "Username: ".$username."<br />";
  5. echo "Password: ".$password."<br />";
  6. echo "Make sure you save this somewhere safe!";
  7. ?>

Заключение

Така че това е края на двете части на урока. Първият сегмент на този урок е за тези, които търсят основно генериране на случайна парола / низ, вторият сегмент дава възможност за увеличаване на ситурноста, по-добър контрол над генерирането на парола / низ. Настройките на всяка версия доведе до сложност и продължителност на низа.

0 comments:

Публикуване на коментар

Copyright © 2014 Tehnocomp.
Back To Top