---
title: "Kryptera lösenord"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/14722-kryptera-lösenord"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "stevenet"
published: "2000-08-12T15:53:00.000Z"
updated: "2000-08-14T13:00:00.000Z"
replies: 12
views: 632
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/14722-kryptera-lösenord"
---

# Kryptera lösenord

## #1 — stevenet, 2000-08-12T15:53Z

Hur krypterar och avkrypterar jag ett lösenord?

Permalänk: https://www.webforum.nu/p/14722

## #2 — woodi, 2000-08-12T16:03Z

Kolla crypt() i [PHP manualen](http://www.php.net).

Eller också Password() i [mySQL manualen](http://www.mysql.com).

Permalänk: https://www.webforum.nu/p/311772

## #3 — Robban, 2000-08-13T04:37Z

Bör väl kanske nämnas att crypt() och md5() (som också kan användas - kan t.o.m. vara att föredra) är envägskrypteringar. D.v.s. det går inte att "avkryptera" (dekryptera) någonting krypterat med dessa funktioner.

Men det skall inte gå heller, om man vill ha ett säkert lösenordssystem. Man lagrar lösenordet krypterat. När man skall kolla användarens lösenord så frågar man efter det, kryperar det (med samma "salt") och jämför detta krypterade lösenord med det man har lagrat. Om de stämmer överens så har användaren angett rätt lösenord.

Permalänk: https://www.webforum.nu/p/311773

## #4 — stevenet, 2000-08-13T07:08Z

Tackar! Är det någon som har ett kodexempel?

Permalänk: https://www.webforum.nu/p/311774

## #5 — woodi, 2000-08-13T09:18Z

Denna koden crypterar lösenordet och stoppar in i databasen.

**createpassword.php**

```
$password="kalle";
$salt="1zH";
$password=crypt($password, $salt);
mysql_query("update tabellen set password='$password'");
```

Sen har Du ett inloggningsformulär med bl.a. ett lösenordsfält.

**inlogg.php**

```
<?
  if($submit){
    $salt="1zH";
    $Fpassword=crypt($Fpassword, $salt);
    $res=mysql_query("select password from tabellen where user='$Fuser'");
    $row=mysql_fetch_array($res, MYSQL_ASSOC);
    if(mysql_numrows($res)==1){
      if($Fpassword==$row[password])
        echo "Grattis Du har behörighet!";
      else
        echo "Fel lösenord!";
    }else
      echo "Användaren finns inte!";
  }
?>

<html>
<head></head>
<body>
<form action="inlogg.php" method="post">
Användarnamn:<br>
<input type='text' name='Fuser'><br>
Lösenord:<br>
<input type='password' name='Fpassword'><br>
<input type='submit' name='submit' value='Logga in'>
</form>
</body>
</html>
```

Permalänk: https://www.webforum.nu/p/311775

## #6 — woodi, 2000-08-13T09:28Z

Robban
Hur avkrypterar Du krypteringar som gjorts med Password() i mySQL!?  Vad jag vet så går inte detta heller..

Permalänk: https://www.webforum.nu/p/311776

## #7 — Robban, 2000-08-13T22:34Z

Nope, går inte att dekryptera MySQL's **PASSWORD()** heller (är som sagt det normala när det gäller lösenord). Inte heller med **ENCRYPT()**, som är en annan funktion i MySQL.

Appropå ditt exempel. För bästa säkerhet bör man slumpa fram "saltet" och inte använda samma varje gång (normallängden är dessutom två tecken - ditt sista tecken kommer att slängas bort helt enkelt). För att senare veta vilket "salt" som användes för ett specifikt lösenord så tittar man på de två första tecknen i det krypterade lösenordet (om DES används för krypteringen).

Lite osäker på om **crypt()** fungerar på alla system (Win32 t.ex.)? Tror inte det? Var därför jag skrev att **md5()** kan vara att föredra (även om MD5 egentligen inte är avsedd till detta - har dock mindre praktisk betydelse). För **md5()** vet jag fungerar på Win32 (om man nu bryr sig om Win32-kompatibilitet ö.h.t.).

Permalänk: https://www.webforum.nu/p/311777

## #8 — nanne, 2000-08-14T06:10Z

Crypt(); funkar icke på win32. Satt hela helgen och slet i mitt hår för att jag inte fick det att funka. Förbannat att man inte kan ge sina användare större säkerhet pga att webhotellet kör windows.

Permalänk: https://www.webforum.nu/p/311778

## #9 — woodi, 2000-08-14T07:17Z

Robban
Så sant så sant..  Men ett exempel script efterfrågades och jag slängde ihop ett lite snabbt..  Lite får väl personerna ifråga göra själva!  ;)

Permalänk: https://www.webforum.nu/p/311779

## #10 — stevenet, 2000-08-14T07:23Z

Hur slumpar man fram "saltet"?

Permalänk: https://www.webforum.nu/p/311780

## #11 — woodi, 2000-08-14T07:31Z

Kolla srand() och rand() i [phpmanualen](http://www.php.net).

Permalänk: https://www.webforum.nu/p/311781

## #12 — Matti, 2000-08-14T09:49Z

```
$verify="38fe8951595f01a3c16f3d50ea0bcc53";
$password=md5($losenord);
if($password==$verify)
echo "blablabla";
```

Tillräckligt säkert för ett admin-system för en gästbok?

Permalänk: https://www.webforum.nu/p/311782

## #13 — Robban, 2000-08-14T13:00Z

nanne:

Du kan använda **md5()**. Ger i stort sett lika bra säkerhet som **crypt()** och skall fungera på Win32.

Matti:

Japp, det tycker jag. Problemet (om man nu skall kalla det så) med **md5()** är att det egentligen inte är en krypteringsalgoritm utan en s.k. "message digest". Innebär i klartext att det finns flera indata som ger samma utdata. Detta är ju inte så bra när det gäller en lösenordsfunktion, men chansen att detta skall ställa till med problem är i stort sett obefintlig.

Sedan är ett annat "problem" att PHPs **md5()** inte använder "salt" som **crypt()** gör, vilket sänker säkerheten en del. Men detta får man leva med om man vill att sidan skall vara Win32-kompatibel. Säkerheten blir bra nog för de flesta tillämpningar.

Permalänk: https://www.webforum.nu/p/311783

---

Tråden på webben: https://www.webforum.nu/amne/php/14722-kryptera-lösenord
