Forum und email

crypt

(PHP 4, PHP 5)

crypt — DES-encrypt een string

Beschrijving

string crypt ( string $str [, string $salt ] )

crypt() encrypteert een string gebruikmakend van de standaard Unix DES encryptie methode. Argumenten zijn de string die gecrypteerd moet worden en een optionele twee-karakter salt string om de encryptie op te baseren. Zie de Unix man page voor je crypt functie en meer informatie.

Als het salt argument niet wordt meegegeven zal de string willekeurig gegenereerd worden door PHP.

Sommige operating systems ondersteunen meer dan een type encryptie. Soms is zelfs de standaard DES encryptie vervangen door een MD5 gebaseerd encryptie algoritme. Het encryptie type wordt getriggerd door het salt argument. Op het moment van installeren bepaalt PHP de mogelijkheden van de crypt functie en zal salts accepteren voor andere encryptie types. Als er geen salt beschikbaar is zal PHP zelf een uit 2 karakters bestaande DES salt genereren, tenzij het default encryptie type op het systeem MD5 is, in dat geval zal een random MD5 compatibele salt gegenereerd worden. PHP maakt een constante aan genaamd CRYPT_SALT_LENGTH die je vertelt of een regulare 2-karakter salt of dat een 12-karakter MD5 van toepassing is.

In het geval je de meegegeven salt gebruikt, wees er dan van bewust dat de salt 1 keer gegenereerd wordt. Als je de functie recursief aanspreekt, kan dit gevolgen hebben voor de appearance en, tot op zekere hoogte, de veiligheid.

De standaard DES encryptie crypt() gebruikt de salt als de eerste 2 karakters van de output. Ook gebruikt het slechts de eerste acht karakters van str , dus langere strings die met dezelfde acht karakters beginnen zullen hetzelfde resultaat opleveren (als hetzelfde salt wordt gebruikt).

Op systemen waar de crypt() functie meerdere encryptie types ondersteunt, de volgende constanten zijn gezet op waardes 0 of 1, afhankelijk van het feit of het gegeven type beschikbaar is:

  • CRYPT_STD_DES - Standaard DES encryptie met een 2-karakter SALT
  • CRYPT_EXT_DES - Uitgebreide DES encryptie met een 9-karakter SALT
  • CRYPT_MD5 - MD5 encryptie met een 12-karakter SALT beginnend met $1$
  • CRYPT_BLOWFISH - Uitgebreide DES encryption met een 16-karakter SALT startende met $2$

Note: Er is geen decrypt functie, omdat crypt() gebruikmaakt van een one-way algoritme.

Example#1 crypt() voorbeelden

<?php
$password 
crypt("My1sTpassword"); # salt wordt gegenereerd

# Je moet de het gehele resultaat van crypt gebruiken als salt om een
# wachtwoord te vergelijken, om problemen te voorkomen als je verschillende
# hashing algoritmen gebruikt. (Zoals hierbove beschreven, gebruikt een
# standaard DES-gebaseerde wachtwoord hashing een 2-karakter salt, maar
# MD5-based hashing gebruikt er 12.
if (crypt($user_input,$password) == $password) {
   echo 
"Password is geverifieerd.!";
}
?>

Zie ook: md5() en de Mcrypt extensie.