[crypt] haytjes
Auteur: haytjes - 09 september 2005 - 22:26 - Gekeurd door: nemesiskoen - Hits: 7454 - Aantal punten: 4.10 (5 stemmen)
HACRYPT & DEHACRYPT
1. Inleiding
Dit is de eerste keer dat ik een crypt en decrypt functie maak. Nu voor dit script heb ik mij in het standpunt van hacker en cracker geplaatst. Ik heb me dus vooral afgevraagd wat ik zou doen, als ik een hacker of cracker was. Dus wat ik zou doen, wanneer ik een gecrypteerde tekst krijgt en die moet decrypteren. Ik hoop dan ook dat ik erin geslaagd been een redelijk goede crypteerder te maken.
2. Functies
Deze crypt bestaat uit twee functie:
hacrypt(); & dehacrypt();
2.1. hacrypt(“woord”, “paswoord”);
Deze functie crypteert jouw woord, zin of tekst naar een [0-9]+ string. Hierbij kan je gebruik maken van een paswoord, wat natuurlijk veiliger is. Je kan het paswoord ook leeg laten. Code: $crypt = hacrypt($tekst,$pass);.
2.2. dehacrypt(“crypt”, “paswoord”);
Deze functie decrypteert het woord dat je hebt gecrypteerd met ‘hacrypt’. Je vult de string in en het paswoord dat je hebt gebruikt om het te decrypteren.
Ik heb ervoor gekozen ook mijn decrypt tool erbij te zetten. Dit was wel even werk, omdat er nog een verschil in zit tussen: weten dat je het kan decrypteren, het bedenken hoe dat moet en het effectieve maken. Een crypteer functie alleen maken is veel gemakkelijker. Ik zet de decrypt tool er nog bij, omdat ik vind dat het door iedereen mag gebruikt worden.
Code: $tekst = dehacrypt($crypt,$pass);
3. Uitleg
3.1. Voordelen
1) Elke crypt is uniek, ook al gebruik je hetzelfde woord en paswoord. Dit heb ik erin gebouwd, vooral voor de security.
2) Ik heb alleen de output [0-9]+ gebruikt, omdat hierdoor er minder charakteristieken in zit.
3) Dit script kan alle tekens crypteren, dus ook \t,▐, ϝ ...
4) Je moet geen paswoord invullen, maar het zorgt voor een extra veiligheid. Het paswoord is ook geëncrypteerd, dus als ze op één of andere manier de tekst kraken, is het paswoord nog veilig.
3.2 Nadelen
Elk script heeft zijn nadelen en ik vind het best om die ook op te noemen. Hierdoor toon ik wel de zwakheden, die sommige mensen niet direct zouden merken, maar ik vind dit nog altijd het eerlijkste:
1) Vanaf dat dit script populair wordt, is de beveiliging eraf. Dus raad je aan bij gebruik van dit script, nooit de code te tonen
2) Hoe groter je tekst wordt, hoe langer dat het duurt om het te maken:
10 tekens => 0,0009 sec.
100 tekens => 0,0145 sec.
500 tekens => 0,2135 sec.
1000 tekens => 0,7344 sec.
3) Doordat je als output alleen maar [0-9]+ krijgt, wordt de tekst plusminus 4*groter dan de orginele tekst.
|
Code: |
<?
function hacrypt($word, $pass="")
{
if(is_string($word) && is_string($pass))
{
$crypt_pass = "";
$y = strlen($pass);
for($x=0;$x<$y;$x++)
{
$crypt_pass .= ord(substr($pass,$x,1));
}
$crypt = "";
$y = strlen($word);
for($x=0;$x<$y;$x++)
{
if($x>0)
$tekst[$x] = $tekst[$x-1] + ord(substr($word,$x,1));
else
$tekst[$x] = ord(substr($word,$x,1));
if($tekst[$x] > 1000)
$tekst[$x] -= 1000;
$crypt .= str_pad($tekst[$x],4,"0",STR_PAD_LEFT);
}
$y = strlen($crypt);
if(!empty($crypt_pass))
$crypt_pass = str_pad ("", $y,$crypt_pass);
$rand = round(rand(1,999));
$rand_tot = $rand;
$tmp1 = $rand;
for($x=0;$x<$y;$x++)
{
$tmp1 = bcmul($tmp1,"10");
$rand_tot = bcadd($rand_tot,$tmp1);
}
$optel = strrev(bcadd($crypt,$crypt_pass));
$optel = bcadd($optel,$rand_tot);
if(strlen(strlen($y))>3)
die("Text is to big");
return $optel.str_pad($rand,4,"0",STR_PAD_LEFT).$y.str_pad(strlen($y),3,"0",STR_PAD_LEFT);
}
else
{
die("You need to give a string as input");
}
}
function dehacrypt($crypt, $pass="")
{
if(is_string($crypt) && is_string($pass))
{
$crypt_pass = "";
$y = strlen($pass);
for($x=0;$x<$y;$x++)
{
$crypt_pass .= ord(substr($pass,$x,1));
}
$l = substr($crypt,strlen($crypt)-3,3)*1;
$lengte = substr($crypt,strlen($crypt)-$l-3,$l)*1;
$rand = substr($crypt,strlen($crypt)-4-$l-3,4);
$crypt = strrev(substr($crypt,0,-4-$l-3));
if(!empty($crypt_pass))
$crypt_pass = str_pad ("", $lengte,$crypt_pass);
$rand_tot = $rand;
$tmp1 = $rand;
for($x=0;$x<$lengte;$x++)
{
$tmp1 = bcmul($tmp1,"10");
$rand_tot = bcadd($rand_tot,$tmp1);
}
$optel = strrev(bcsub(strrev($crypt),$rand_tot));
$optel = bcsub($optel,$crypt_pass);
$optel = str_pad($optel,$lengte,"0",STR_PAD_LEFT);
$y = strlen($optel);
$vorige=0;
$word = "";
for($x=0;$x<$y;$x+=4)
{
$nu = substr($optel,$x,4);
if($vorige > $nu)
$vorige = $vorige-1000;
$word .= chr($nu-$vorige);
$vorige = $nu;
}
return $word;
}
else
{
die("You need to give a string as input");
}
}
?>
<? function hacrypt($word, $pass="") { { $crypt_pass = ""; for($x=0;$x<$y;$x++) { } $crypt = ""; for($x=0;$x<$y;$x++) { if($x>0) $tekst[$x] = $tekst[$x-1] + ord(substr($word,$x,1)); else if($tekst[$x] > 1000) $tekst[$x] -= 1000; $crypt .= str_pad($tekst[$x],4,"0",STR_PAD_LEFT ); } $crypt_pass = str_pad ("", $y,$crypt_pass); $rand_tot = $rand; $tmp1 = $rand; for($x=0;$x<$y;$x++) { $tmp1 = bcmul($tmp1,"10"); $rand_tot = bcadd($rand_tot,$tmp1); } $optel = bcadd($optel,$rand_tot); } else { die("You need to give a string as input"); } } function dehacrypt($crypt, $pass="") { { $crypt_pass = ""; for($x=0;$x<$y;$x++) { } $crypt_pass = str_pad ("", $lengte,$crypt_pass); $rand_tot = $rand; $tmp1 = $rand; for($x=0;$x<$lengte;$x++) { $tmp1 = bcmul($tmp1,"10"); $rand_tot = bcadd($rand_tot,$tmp1); } $optel = bcsub($optel,$crypt_pass); $optel = str_pad($optel,$lengte,"0",STR_PAD_LEFT ); $vorige=0; $word = ""; for($x=0;$x<$y;$x+=4) { if($vorige > $nu) $vorige = $vorige-1000; $word .= chr($nu-$vorige); $vorige = $nu; } return $word; } else { die("You need to give a string as input"); } } ?>
Download code (.txt)
|
|
|
Stemmen |
Niet ingelogd. |
|