Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generator Klucza
Forum PHP.pl > Forum > PHP
alkesz1718
Witam, do jednego z moich modułów napisałem kod na sprawdzanie licencji który wygląda następująco:
  1. $shost = str_replace("www.", "", strtolower(getenv("HTTP_HOST")));
  2. $shost = md5("nstudio" . md5($shost) . "isound");
  3. $real_key = strtoupper(substr($shost, 0, 5) . "-" . substr($shost, 6, 5) . "-" . substr($shost, 12, 5) . "-" . substr($shost, 18, 5) . "-" . substr($shost, 24, 5));
  4. if ($ns_config["activate"] != $real_key) {
  5. exit(".error:Moduł nie został aktywowany");
  6. }
  7. unset($shost);
  8. unset($real_key);


I teraz mam problem aby na mojej stronie w sekcji gdzie dla użytkownika będzie generowany unikalny klucz licencyjny skrypt generował mi odpowiedni klucz w formacie XXXXX-XXXXX-XXXXX-XXXXX-XXXX

Aktualnie wykorzystuję taki generator:
Funkcja:
  1. function Md5Key()
  2. {
  3. $md5_key = md5(uniqid(rand(), true));
  4.  
  5. $first_seg = substr($md5_key, 0, 5);
  6. $second_seg = substr($md5_key, 5, 5);
  7. $third_seg = substr($md5_key, 10, 5);
  8. $fourth_seg = substr($md5_key, 15, 5);
  9.  
  10. return strtoupper(sprintf('%s-%s-%s-%s', $first_seg, $second_seg, $third_seg, $fourth_seg));
  11. }

Tworzenie i zapisywanie klucza:
  1. do //sprawdzamy, czy istnieje już taki numer licencji, jeżeli tak, to pętla wykona się dotąd aż nie będzie takiego klucza
  2. {
  3. $new_key = Md5Key();
  4. // $new_key = uuid();
  5. $my_qr = sprintf($query_user_key,$new_key);
  6. $mydata -> SetQuery($my_qr);
  7. }
  8. while ($mydata->CouRec=0);
  9.  
  10. $my_qr = sprintf($insert_user_data, $name, $email, $software, $domain, $new_key, $amount); //insert nowego rekordu
  11. $mydata->ModifyQuery($my_qr);
  12. $mydata->DBClose();
  13.  
  14. //header("Location:http://www.strona_startowa.pl");
  15. echo "<h3>Klucz licencyjny dla strony: <span style='color:red'>$domain</span> </h3> <br>
  16. Klient:<b> $name </b> <br><hr>
  17. Moduł: <b>$software</b> <br><hr>
  18. Adres E-Mail: <b>$email</b></a><hr/>";
  19.  
  20. echo 'Klucz Licencyjny: <b><span style="color:green">'.$new_key.'</span></b>';
  21. exit();


I teraz potrzebuję kolejnego generatora który będzie mi tworzył odpowiedni klucz taki aby był zgodny z zmienną:
  1. $shost = md5("nstudio" . md5($shost) . "isound");

Byłbym wdzięczny za wszelką pomoc
gino
Po pierwsze rand() nie generuje wartości uznawanej jako bezpieczna z punktu widzenia kryptografii jeśli już chcemy się bawić w klucze licencyjne.
Po drugie dlaczego to jest tak przekombinowane? Przecież można wygenerować klucz UUID podczas rejestracji, zapisać do bazy a w momencie wejścia na stronę sprawdzić w bazie klucz dla tej strony. Koniecznie musi być to format jaki podałeś? Funkcje do generowania UUID są dostępne dla php wystarczy poszukać a bezpieczeństwo bez porównania większe niż pseudolosowe klucze. No i dwie (różne) funkcje do generowania kluczy?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.