Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> generowanie losowych kodów
^piraciq^
post 1.09.2003, 17:31:50
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.02.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


witam wszystkich

wiem o tym ze ten problem byl juz tu poruszany ale nie moge znalesc tego chodzi mi mianowicie o generowanie kodów w locie

prosze o pomoc
Go to the top of the page
+Quote Post
GeoS
post 1.09.2003, 17:38:19
Post #2





Grupa: Zarejestrowani
Postów: 602
Pomógł: 0
Dołączył: --
Skąd: W - WA -> GRO

Ostrzeżenie: (0%)
-----


Jest wiele sposobow. Wymienie kilka funkcji, ktore mozna polaczyc do otrzymania losowego stringa:
crc32();
date();
mt_rand();
mktime();
md5();
...


--------------------
Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com
Go to the top of the page
+Quote Post
^piraciq^
post 1.09.2003, 17:45:02
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.02.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


dzieki to wiem ale kiedys przewijal sie ty taki fajny skrypcik mnoze go ktos posiada??
Go to the top of the page
+Quote Post
spenalzo
post 1.09.2003, 18:12:16
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
dzieki to wiem ale kiedys przewijal sie ty taki fajny skrypcik mnoze go ktos posiada??

Hmm.. nie wiem czy dobrze zapamietalem, bo to skomplikowany skrypt :-D
[php:1:6ef9b63976]<?php
echo md5(uniqid(rand()));
?>[/php:1:6ef9b63976]


--------------------

Go to the top of the page
+Quote Post
^piraciq^
post 1.09.2003, 18:19:00
Post #5





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 1.02.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


wlasnie wlasnie cos takiego
i to bylo nawet tutaj o ile mnie pamiec nie myli
Go to the top of the page
+Quote Post
dob
post 1.09.2003, 19:29:37
Post #6





Grupa: Zarejestrowani
Postów: 166
Pomógł: 0
Dołączył: 30.01.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Sprawdz to http://forum.php.pl/viewtopic.php?p=26295&...ighlight=#26295
Go to the top of the page
+Quote Post
b3
post 1.09.2003, 19:33:30
Post #7





Grupa: Zarejestrowani
Postów: 65
Pomógł: 2
Dołączył: 25.08.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


np..

[php:1:91a150d1b5]<?php
print md5(date("U"));

?>[/php:1:91a150d1b5]
Go to the top of the page
+Quote Post
adwol
post 1.09.2003, 20:05:46
Post #8





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
np..  

[php:1:3ddd8fca74]<?php
print md5(date("U"));

?>[/php:1:3ddd8fca74]

Zbyt trywialne do wykrycia. Dobrze losowy identyfikator musi bazować na szybkozmiennym źródle o dużej entropii. Znając w przybliżeniu czas stworzenia takiego id można szybko odnaleźć właściwy. Lepszym jest pomysł bazowania na liczbie mikrosekund (tak jak to robi np. uniqid) gdyż zmienia się ona znacznie szybciej.
Ja, osobiście, korzystam w takich wypadkach z mikrosekund, kilku rand()'ów, zawartości REMOTE_ADDR i REMOTE_PORT, loginie i haśle użytkownika (jeśli występują), pidzie procesu i zawartości zmiennych środowiskowych.
Go to the top of the page
+Quote Post
spenalzo
post 1.09.2003, 20:37:16
Post #9





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
Ja, osobiście, korzystam w takich wypadkach z mikrosekund, kilku rand()'ów, zawartości REMOTE_ADDR i REMOTE_PORT, loginie i haśle użytkownika (jeśli występują), pidzie procesu i zawartości zmiennych środowiskowych.

Bez przesady.
Zgodnie z tym co napisano w "PHP4. Aplikacje" aby identyfikator byl praktycznie nie do złamania wystarczy takie cos:
[php:1:4ffec4ca6f]<?
srand((double) microtime()*1000000);
$id=md5(uniqid(rand()));
?>[/php:1:4ffec4ca6f]
Z tego masz 340 282 366 920 938 463 463 374 607 431 768 211 456 mozliwych wartosci. A wiec chyba starczy, co? :-)


--------------------

Go to the top of the page
+Quote Post
adwol
post 1.09.2003, 20:57:34
Post #10





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
Bez przesady.
Zgodnie z tym co napisano w "PHP4. Aplikacje" aby identyfikator byl praktycznie nie do złamania wystarczy takie cos:
[php:1:41c8d6a39b]<?
srand((double) microtime()*1000000);
$id=md5(uniqid(rand()));
?>[/php:1:41c8d6a39b]
Z tego masz 340 282 366 920 938 463 463 374 607 431 768 211 456 mozliwych wartosci. A wiec chyba starczy, co? :-)

No może faktycznie, czasami jestem paranoikiem. :wink:
Ale:
[php:1:41c8d6a39b]<?php
$id=md5(date('U'));
?>[/php:1:41c8d6a39b]
to jednak trochę za słabo.
Go to the top of the page
+Quote Post
spenalzo
post 1.09.2003, 21:00:53
Post #11





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
Ale:
[php:1:eb1ec5e307]<?php
$id=md5(date('U'));
?>[/php:1:eb1ec5e307]
to jednak trochę za słabo.

Zgadzam sie, chodzilo mi o Twoje sposoby :-)
Ale dobrze, że nie dał
[php:1:eb1ec5e307]<?php
$id=md5(date('Y'));
?>[/php:1:eb1ec5e307]
:-)


--------------------

Go to the top of the page
+Quote Post
chfast
post 8.11.2003, 14:22:56
Post #12





Grupa: Zarejestrowani
Postów: 222
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat
[php:1:55ee4cc557]<?
srand((double) microtime()*1000000);
$id=md5(uniqid(rand()));
?>[/php:1:55ee4cc557]

Z tego co jest napisane w manualu wynika, że od php 4.2.0 nie trzeba inicjować generatora liczb losowych (srand()). Nie wiem jednak jak sie ma podawane ziarno w srand() do powtarzalności liczb wylosowanych przez rand(). Ja bym jednak opóścił srand() - bedzie jeszcze prościej.


--------------------
pozdrawiam, chfast
Go to the top of the page
+Quote Post
rachwal
post 8.11.2003, 17:11:14
Post #13





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 29.08.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


To ja sie jeszcze dorzuce z czyms takim:

[php:1:b1be3a0277]<?php
function makeRandomPassword() {
$salt = "abchefghjkmnpqrstuvwxyz0123456789";
srand((double)microtime()*1000000);
$i = 0;
while ($i <= 7) {
$num = rand() % 33;
$tmp = substr($salt, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
$random_password = makeRandomPassword();
echo "Random Password is $random_password n";
?>[/php:1:b1be3a0277]


--------------------
pozd.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 02:35