Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Generowanie nie losowych stringow
Jabol
post 15.08.2003, 22:28:39
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


Możecie bez strachu przejśc tutaj: http://forum.php.pl/viewtopic.php?p=31706#31706 ;P
[php:1:725d22549f]<?php

$hashes = array();

function get_string()
{
static $string, $depth, $init;
if( ! $init )
{
$init = true;
$string = array( chr( 1 ), chr( 1 ), chr( 1 ), chr( 1 ) );
$depth = 4;
}
else
{
if( ( $char = ++ord( $string[ $depth - 1 ] ) ) > 255 )
{
$string[ $depth - 1 ] = chr( 1 );
for( $i = $depth - 1; $i > 0; $i-- )
if( ++ord( $string[ $i - 1 ] ) > 255 )
{
$string[ $i - 1 ] = chr( 1 );
if( ( $i - 2 == 0 ) && ( ++ord( $string[ 0 ] ) > 255 ) )
{
$string[ ++$depth - 1 ] = chr( 1 );
break;
}
else
$string[ $i - 2 ] = chr( ord( $string[ $i ] ) ++ );
}
else
break;
}
else
$string[ $depth - 1 ] = chr( $char );
}
return implode( '', $string );
}

do
$hashes[ md5( ( $string = get_string() ) ) ] = $string;
while( sizeof( $hashes ) <= pow( 16, 32 ) );

$fd = fopen( 'hashtable', 'w' );
fputs( $fd, serialize( $hashes ) );
fclose( $fd );

?>[/php:1:725d22549f]niech ktoś to przetestuje, może najpierw tylko funkcje get_string(); pisalem bez testowania z glowy, wiec nie wiem czy dziala.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Seth
post 15.08.2003, 23:00:06
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Cytat
Fatal error: Can't use function return value in write context in d:wwwhtable.php on line 16

smile.gif
Go to the top of the page
+Quote Post
Jabol
post 15.08.2003, 23:05:30
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


hmmm[php:1:62b5670084]<?php

$hashes = array();

function get_string()
{
static $string, $depth, $init;
if( ! $init )
{
$init = true;
$string = array( chr( 1 ), chr( 1 ), chr( 1 ), chr( 1 ) );
$depth = 4;
}
else
{
if( ( $char = ( ord( $string[ $depth - 1 ] ) ) + 1 ) > 255 )
{
$string[ $depth - 1 ] = chr( 1 );
for( $i = $depth - 1; $i > 0; $i-- )
if( ( ord( $string[ $i - 1 ] ) + 1 ) > 255 )
{
$string[ $i - 1 ] = chr( 1 );
if( ( $i - 2 == 0 ) && ( ( ord( $string[ 0 ] ) + 1 ) > 255 ) )
{
$string[ ++$depth - 1 ] = chr( 1 );
break;
}
else
$string[ $i - 2 ] = chr( ( ord( $string[ $i ] ) + 1 ) );
}
else
break;
}
else
$string[ $depth - 1 ] = chr( $char );
}
return implode( '', $string );
}

do
$hashes[ md5( ( $string = get_string() ) ) ] = $string;
print $string. "n";//debbuging
while( sizeof( $hashes ) <= pow( 16, 32 ) );

$fd = fopen( 'hashtable', 'w' );
fputs( $fd, serialize( $hashes ) );
fclose( $fd );

?>[/php:1:62b5670084]
Go to the top of the page
+Quote Post
Seth
post 15.08.2003, 23:08:43
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Cytat


:?

Jak bede mial wiecej czasu to napisze jakas funkcje tworzaca stringi.

P.S. Zamiast tworzenia calej tablicy i potem zapisywania jej do pliku lepeiej zrobic tak, ze podczas tworzenia klucza zostaje on automatycznie zapisany do pliku do nowej lini <hash>=<wartosc>. Gdyz zawsze mozna wtedy przerwac bez utraty poprzednich wynikow.
Go to the top of the page
+Quote Post
Jabol
post 15.08.2003, 23:11:49
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


Cytat
Cytat

co to za cytat?
Go to the top of the page
+Quote Post
Seth
post 15.08.2003, 23:14:40
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


wynik get_string()
Go to the top of the page
+Quote Post
Jabol
post 15.08.2003, 23:28:38
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


hmmm
a przeanalizujmy kod (troche zmieniony ;P ):[php:1:21720c74fc]<?php

$hashes = array();

function get_string()
{
static $string, $depth, $init;
if( ! $init )//jezeli nie ma zapoczatkowanego to zrob to
{
$init = true;
$string = array( chr( 1 ), chr( 1 ), chr( 1 ), chr( 1 ) );//ustaw na 1,1,1,1 poniewaz ponizszy kod wymaga conajmniej 4 znakow
$depth = 4;
}
else//jezeli zapoczatkowane
{
if( ( $char = ( ord( $string[ $depth - 1 ] ) ) + 1 ) > 255 )//jezeli ostatni znak powiekszony o 1 przekracza pule ascii
{
$string[ $depth - 1 ] = chr( 1 );//zmien ostatni znak na pierwszy w ascii
for( $i = $depth - 1; $i > 0; $i-- )//dla kazdego znaku blizej poczatku sprawdz, czy nie przekracza ascii
if( ( ord( $string[ $i - 1 ] ) + 1 ) > 255 )//jezeli tak
{
$string[ $i - 1 ] = chr( 1 );//zmien ten znak na pierwszy w ascii
if( ( $i - 2 == 0 ) && ( ( ord( $string[ 0 ] ) + 1 ) > 255 ) )//jezeli znak przed nim jest pierwszym znakiem i przekracza pule
{
$string[ ++$depth - 1 ] = chr( 1 );//zwieksz dlugosc stringow
$string[ 0 ] = chr( 1 );//zmien pierwszy znak na ascii 1
break;//skoncz petla
}
else//jezeli nie
$string[ $i - 2 ] = chr( ( ord( $string[ $i ] ) + 1 ) );//zwieksz znak przed ostatnim znakiem, zeby po 1,1,1,255 dawalo 1,1,2,1 a nie 1,1,1,1
}
else//jezeli nie przekracza puli asci
{
$string[ $i ] = ord( $string[ $i - 1 ] ) + 1;//zwieksz go o 1
break;//i zakoncz petle
}
}
else//jezeli nie to
$string[ $depth - 1 ] = chr( $char );//zwieksz ten znak
}
return implode( '', $string );//wiadomo
}
//dalej wiadomo
do
{
$hashes[ md5( ( $string = get_string() ) ) ] = $string;
print $string. "n";//debbuging
}
while( sizeof( $hashes ) <= pow( 16, 32 ) );

$fd = fopen( 'hashtable', 'w' );
fputs( $fd, serialize( $hashes ) );
fclose( $fd );

?>[/php:1:21720c74fc]Może dojrzycie błąd?

ps. zastanawiam się, czy nie przenieść do php? conajmniej ostatnich paru postów

//edit, juz sie nie zastanawiam ;P
post nawiazuje dohttp://forum.php.pl/viewtopic.php?t=4985
Go to the top of the page
+Quote Post
Seth
post 16.08.2003, 20:20:10
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Ma moze ktos link skad mozna sciagnac slowniki ?
Chodzi mi tylko o same wyrazy.

Ostatnio patrzylem i le zajmuje stworzenie tablicy z hashami tak jak to proponowales Jabol. Przetestowalem to na pliku z adresami proxy, ktory posiadal ok 700 000 adresow zajelo niecale 2 sekundy !

A moze ktos juz napisal funkcje do tworzenia wszystki mozilwych slow do okreslonej dlugosci znakow (znaki z przedzialu: 32-126 i 128-254 kodu asci) ? smile.gif
Go to the top of the page
+Quote Post
Jabol
post 16.08.2003, 20:23:38
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


Seth, mój skrypt ma w założeniach, że długość jest nieskończona tongue.gif. Jedzie aż bedzie miał gotowe
Na linuxie (może na win, też jest, nie wiem, nie znam się) można by czytać z /dev/random cały czas.
Go to the top of the page
+Quote Post
Seth
post 16.08.2003, 20:30:19
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


tylko, ze caly czas ten kod zwraca to:  smile.gif
Go to the top of the page
+Quote Post
Jabol
post 16.08.2003, 20:36:10
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


Cytat
w założeniach
:wink:

a tak wogole umiescilem go tu, żeby ktoś mi pomógł...
Go to the top of the page
+Quote Post
uboottd
post 17.08.2003, 20:12:33
Post #12





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

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


Tak w ogole to jest zatrudnianie zolwia do wyscigow dragsterow. Poszukaj libgmp i napisz to sobie w C. Z ta biblioteka to beda trzy-cztery linijki kodu.
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 - 16:05