Pull to refresh

Генератор ключей на php

Добрый день.
Сегодня я расскажу как сделать генератор ключей для вашего онлайн-приложения.

Принцип работы
Генератор:
Вход: name
Выход: key

Тестер:
Вход Имя и ключ
Выход: true / false / error

Генератор кода генерирует ключ алгоритмом, который я напишу ниже, а тестер, как положено, делает все задом-наперед и смотрит что получилось.

По сути, это очень-очень соленый md5.

Generator.php

<? php
if($_POST['NAME_IN']!='') {
$name_md5=md5($_POST['NAME_IN'].md5($_POST['NAME_IN'].md5('i_love_music'))); // Получаем md5 от имени
$ser=$name_md5[1].$name_md5[3].$name_md5[5].$name_md5[2].$name_md5[0]; // Выбираем некоторые символы md5 имени.
$reg=$ser.md5(md5($ser).md5(md5($ser).md5($ser).md5('i_am_david'))); // Генерируем ключ
echo $reg; // Выводит ключ
}
?>

«i_love_music» и «i_am_david» — обычное слово, пишите которое хотите, если его поменять, то ключи будут другими даже с теми же именами.

Если нужно делать временные ключи, можно добавить
 $d=getdate(); 
, а вместо слова
 $d[mday] 

tester.php

<? php
function test () {
$str=$_POST['KEY_TEST']; // Получаете строку для теста
$ser=$str[0].$str[1].$str[2].$str[3].$str[4]; // Первые 5 символов ключа
$hesh=substr($str, 5); // Остальные
$name_md5=md5($_POST['NAME_TEST'].md5($_POST['NAME_TEST'].md5('i_love_music'))); // Md5 имени
$ser2=$name_md5[1].$name_md5[3].$name_md5[5].$name_md5[2].$name_md5[0]; // Получаете те же 5 первых символов. Имеет вйты то именно что в $ ser
$mdfive=md5(md5($ser).md5(md5($ser).md5($ser).md5('i_am_david'))); // А теперь генерирует md5-остальные.
if ($_POST['KEY_TEST']!='' and $_POST['NAME_TEST']!='') {
if ($mdfive == $hesh AND $ser2 == $ser) // Если md5-остальные = данной остальных и "те же 5 первых символов" уровне
{return 'TRUE';} // Пишем TRUE
else {return 'FALSE';} // Или FALSE, если нет
} else {return 'ERROR: Field is empty';} // Если поля пустые, то так и пишем
}
echo test (); // Выводим результат теста
?>

Кстати, оказывается в php первый символ под номером 0.

Ну и форма для генератора:

index.php

<fieldset style = "width: 90%;">
<legend> Get key </ legend>
<form method = "post">
NAME: <input type = "text" value = "<?Php echo $_POST['NAME_IN'];?>" Name = "NAME_IN" size = "50"> 
KEY <input type = "text" value = "<?Php include" generator.php "?>" Size = "50"> 
<button type = "submit"> SUBMIT </ button>
</ form>
</ fieldset>

<fieldset style = "width: 90%;">
<legend> Test key </ legend>
<form method = "post">
NAME: <input type = "text" name = "NAME_TEST" value = "<?Php echo $_POST['NAME_TEST'];?>" Size = "50"> 
KEY <input type = "text" name = "KEY_TEST" value = "<?Php echo $_POST['KEY_TEST'];?>" Size = "50"> 
 <button type = "submit"> SUBMIT </ button> 
<?php include "tester.php"; ?>
</ form>
</ fieldset>

Ключ на имя «habr» будет «ae70ed9ee93f2e2314007d6c23c799d71d2c8».
Вот ссылка на демку: http://blastorq.url.ph/keygen-php/
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.