Den MD5 Message - Digest Algorithm är ett envägs krypteringsalgoritm används ofta för att skapa hemliga nycklar , som kallas MD5-hashar . Eftersom kryptering är ett sätt , kan två olika textsträngar producera samma MD5 hash , vilket innebär att du inte kan dekryptera det . Det finns ett oändligt antal sätt att producera samma hash . Men hackare har olika sätt att upptäcka strängar som används för att skapa hashar , så det lönar sig att skapa dem med omsorg . PHP : Hypertext Preprocessor är ett programmeringsspråk som stöder MD5 och andra krypteringsalgoritmer också. Instruktioner
en
Skapa ett salt sträng , som är en icke gissningsbara sträng som används för kryptering. Saltet strängen kommer att användas för att skapa hashar samt bestämma deras giltighet . Ett sätt att skapa en bra salt sträng är genom att förvränga ett gäng slumpmässiga tecken med PHP : s md5 -funktionen . Utgången av funktionen är en 32 - siffrigt hexadecimalt tal , vilket ger dig mer än 3,40 x 10 ^ 38 möjliga kombinationer . Till exempel , inkludera något som liknar följande i din PHP-kod :
$ salt = md5 ( " 4hJUd5sPP97hT " ) ;
2
Kombinera text med salt strängen med sammanfogningsoperatorn , som egentligen är en period , och kryptera den med md5 -funktionen . Till exempel, om du kryptera lösenord , typ :
$ password = " Us54EEh5R ";
$ krypterad = md5 ( . $ Password $ salt ) ,
" Rainbow bord " är databaser som används för att knäcka MD5-hashar , varav den största har mellan 10 och 20 miljarder poster . Även om en databas hade 100 miljarder distinkta MD5-hashar , det är mindre än en på 10 ^ 27 möjliga kombinationer . Om en droppe vatten är ca 1/10 cm ^ 3 , skulle det ta ca 1,4 x 10 ^ 25 droppar att fylla jordens oceaner . Därför rainbow tabeller uppgår till mindre än en droppe i alla jordens oceaner . Om din salt strängen är bra , det finns nästan ingen chans den krypterade hash är i en databas . Även om någon av de databaser som hade samma hash , använde strängen för att skapa det skulle vara annorlunda från den i databasen , eftersom de inte kan slösa bort värdefull databas utrymme på de oändliga kombinationer av MD5 - saltade lösenord . Dessa databaser går efter mycket enklare mål .
3
Verifiera hashar behov genom att skapa hash som du gjorde innan och jämföra den med originalet . I fallet av lösenord, lagra krypterade lösenord i en databas. När någon försöker att använda ett lösenord , kryptera lösenord som anges med saltet , och jämför det med kopian i databasen . På detta sätt vet även databasen administratören inte någon av de lösenord . Till exempel , typ :
$ encrypted_entry = md5 ( $ inträde $ salt . ) ;
If ( $ encrypted_entry == $ krypterad ) $ giltigt = true;
annat $ giltig = false; Addera