Сразу скажу - делал для ускорения работы с генератором ключей ранее созданного и работающего только под windows в cmd.
Описание:
Данный код представляет собой HTML форму для генерации случайных ключей (например, для использования в качестве паролей). Форма также позволяет скопировать ключи в буфер обмена.
HTML часть содержит:
- `table` для вывода списка сгенерированных ключей;
- заголовки таблицы: "№", "Ключ", "Копировать";
- кнопка `Generate Key` для создания нового ключа.
JavaScript использует функции `generate()` и `copyToClipboard()`, которые ответственны соответственно за генерацию случайных ключей и копирование их в буфер обмена. Чтобы не было очевидно, что делает этот код, он защищён от использования напрямую - используется шифрование через функцию eval(), которая выполняет переданный ей текст JavaScript-кода. Такое использование эвалюации опасно с точки зрения безопасности, потому что она может выполнить любой код заданной строкой. Поэтому перед запуском данного кода необходимо прежде всего убедиться, что он не содержит никаких потенциально опасных действий.
Общая идея этого кода заключается в том, чтобы предоставить пользователям возможность легко генерировать случайные ключи для использования в различных приложениях или сервисах. Кнопка «Копировать» упрощает жизнь пользователям, позволяя им легко скопировать новый ключ в буфер обмена и использовать его сразу после генерации.
Сам код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Генератор ключей Envato Elements</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container mt-5">
<h2>Генератор ключей Envato Elements (от 1)</h2>
<h3>1 кредит = 1 файл = 6 рублей</h3>
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-target="#collapse1" class="toggleLink">Инструкция (спойлер)</a>
</h4>
</div>
<div id="collapse1" class="panel-collapse collapse">
<div class="panel-body">
<img src="path/to/image" alt="описание картинки">
<p>Описание спойлера</p>
</div>
</div>
</div>
</div>
<script>
$(function() {
$('.toggleLink').click(function() {
$(this).toggleClass('active');
$(this).parents('.panel').find('.panel-collapse').slideToggle(200);
return false;
});
});
</script>
<form>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Постоянный ключ:</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="secret-key" readonly>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Имя проекта:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="name" placeholder="Введите имя проекта">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Сколько кредитов:</label>
<div class="col-sm-10">
<input type="number" class="form-control" id="credit" placeholder="Введите число кредитов">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Количество ключей :</label>
<div class="col-sm-10">
<input type="number" class="form-control" id="str" placeholder="Введите количество ключей">
</div>
</div>
<button type="button" class="btn btn-primary" onclick="generate()">Генерировать ключи</button>
</form>
<hr>
<table class="table table-striped">
<thead>
<tr>
<th>№</th>
<th>Ключ</th>
<th>Копировать (нажатие кнопки скопирует ключ)</th>
</tr>
</thead>
<tbody id="codes">
</tbody>
</table>
</div>
<script>
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('e p(){0 f="q-r";0 8=2.5("8").6;0 9=2.5("9").6;0 a=2.5("a").6;0 7=2.5("7");7.g="";s(0 i=1;i<=a;i++){0 b=h.t(h.b()*u);0 c=f+","+"v-"+8+"-"+b+","+9;0 j=`<k><3>${i}</3><3>${c}</3><3><l w="d d-x d-y"z="m(\'${c}\')">Копировать</l></3></k>`;7.g+=j}}e m(n){0 4=2.A("4");4.B("6",n);2.o.C(4);4.D();2.E("F");2.o.G(4)}',43,43,'var||document|td|input|getElementById|value|codes|name|credit|str|random|fullName|btn|function|legal|innerHTML|Math||row|tr|button|copyToClipboard|text|body|generate|secret|key|for|floor|10000|Envato|class|sm|success|onclick|createElement|setAttribute|appendChild|select|execCommand|copy|removeChild'.split('|'),0,{}))
</script>
</body>
</html>
На выходе получаются ключи подобного формата