---
title: "Slumpa ut lösenord"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/96530-slumpa-ut-lösenord"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Arne"
published: "2004-02-04T07:41:53.000Z"
updated: "2004-11-06T17:46:47.000Z"
replies: 13
views: 694
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/dotnet/96530-slumpa-ut-lösenord"
---

# Slumpa ut lösenord

## #1 — Arne, 2004-02-04T07:41Z

Jag har en registrerings applikation varav jag vill slumpa ut lösenordet vid registreringen som sedan skickas till dom via e-post.
Men slumpen kan ju göra så att samma lösenord dyker upp igen, så man måste ju kolla om lösenordet används innan det skickas. Är det upptaget måste man köra det igen?

Något bra tips hur denna kod bör byggas upp?

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

## #2 — Koplik, 2004-02-04T07:58Z

Ignorera detta inlägg...  :r

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

## #3 — NETwork, 2004-02-04T08:07Z

Är ni samma personer/känner ni varandra eller varför ska detta inlägg ignoreras? Kanske någon annan vill ha svar på just denna fråga så jag tycker diskussionen ska stå kvar.

Personligen tycker inte jag att unika lösenord är extremt viktigt i normala fall, om vi utgår från att lösenordet är kopplat till ett specifikt användarnamn. Man bör dessutom kanske ge användaren möjlighet att byta lösenordet mot något annat och då går det ju inte att spärra lösenord som redan finns (för då vet ju personen att de har hittat någon annans lösenord!).

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

## #4 — Koplik, 2004-02-04T08:09Z

Jag menade inte att tråden skulle ignoreras, utan bara mitt inlägg, detta p.g.a. att jag skrev en lösning... i fel språk nämligen ASP, inte .NET. 

Men jag håller med, att slumpa ut samma lösenord 2 ggr av 10 000 känns inte så farligt, mest för att användarnamnen lär väl skilja sig. Har du en 6-8 tecken med alfabetets alla bokstäver och stora samt små bokstäver så blir det inte ofta den slumpar fram samma lösenord.

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

## #5 — Arne, 2004-02-04T08:27Z

Hmmm...
Kanske jag är för nogrann.

Statistiskt sett hur ofta dyker samma lösenord upp i en:

```
<%
Passwordeller = ""

Randomize

For i = 1 to 6
intNum = Int(10 * Rnd + 48)
intBig = Int(26 * Rnd + 65)
intSmall = Int(26 * Rnd + 97)
intRand = Int(3 * Rnd + 1)

Select Case intRand
Case 1
delPasseller = Chr(intNum)
Case 2
delPasseller = Chr(intBig)
Case 3
delPasseller = Chr(intSmall)
End Select

Passwordeller = Passwordeller & delPasseller

Next

response.write(Passwordeller & "<br>")
%>
```

Hur tänkte du lösningen i asp? Jag är inte bunden att det ska vara asp.net.

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

## #6 — NETwork, 2004-02-04T08:33Z

Koplik: Ah, det förstås, sorry. :)

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

## #7 — Koplik, 2004-02-04T08:46Z

Ok, då kör jag igen ;)

```
      Function GeneratePass(length)
        sPassw59 = "ABCDEFGHIJKLMNOPQRSTUVXYZ1234567890abcdefghijklmopqrstuvxyz"
  
        Randomize()
        locVar = ""
        For cLoop = 1 To Length
          RndNmbr = Round((Rnd() * 58) +1, 0) 
          locVar = locVar & Mid(sPassw59, RndNmbr, 1)
        Next
        GeneratePass = locVar
      End Function
```

 

Det här är hur jag har gjort min generator, nu kommer mitt förslag på hur man kollar så att någon annan inte har samma, inte testat, men simpelt

```
  
  StillDoLoop = True

  Do While StillDoLoop
    'Genererar ett lösenord på 8 tecken
    Password = GeneratePass(8)

    SQLStmt = "Select Password From Users Where Password = '"& Password &"' "  
    Set RS = Conn.Execute(SQLStmt)

    If RS.EOF Then
      StillDoLoop = False
    End If

    Set RS = Nothing
  Loop
```

Bara ett förslag. Generatorn är jag lite stolt över dock, enkelt att lägga till siffror om man vill ha det också.

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

## #8 — Grynet, 2004-02-04T10:41Z

Snygg generator, man kanske får göra en copy paste på den :)

Kan hålla med om att testa om lösenordet redan finns är lite överkurs, men det kanske är bra (så länge du inte gör detta när användarna ska skriva in nya lösen ord..av förståliga skäl)

Nåja är inte därför jag skriver utan hmm, host host, du sparar väl för gudsskull inte lösenorden i klartext i databasen?

använd någon funktion till att kryptera den innan du stoppar in dem där tex

FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5")

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

## #9 — Koplik, 2004-02-04T10:56Z

\*host\*

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

## #10 — renholm, 2004-02-04T13:43Z

Ett annat sätt att generera lösenord på som kan vara användbart ibland är:

```
string GeneratePassword()
{
	byte[] bytes = new byte[10];

	Random rand = new Random(unchecked((int)DateTime.Now.Ticks));
	rand.NextBytes(bytes);

	StringBuilder password = new StringBuilder();
	foreach(byte b in bytes)
		password.Append(b.ToString("X2"));

	return password.ToString();
}
```

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

## #11 — WebbisNet, 2004-11-04T11:19Z

> **Arne skrev:**
>
> Hmmm...
> Kanske jag är för nogrann.
> 
> Statistiskt sett hur ofta dyker samma lösenord upp i en:
> 
>
>
> ```
> <%
> Passwordeller = ""
> 
> Randomize
> 
> For i = 1 to 6
> intNum = Int(10 * Rnd + 48)
> intBig = Int(26 * Rnd + 65)
> intSmall = Int(26 * Rnd + 97)
> intRand = Int(3 * Rnd + 1)
> 
> Select Case intRand
> Case 1
> delPasseller = Chr(intNum)
> Case 2
> delPasseller = Chr(intBig)
> Case 3
> delPasseller = Chr(intSmall)
> End Select
> 
> Passwordeller = Passwordeller & delPasseller
> 
> Next
> 
> response.write(Passwordeller & "<br>")
> %>
> ```
>
> 
> 
> Hur tänkte du lösningen i asp? Jag är inte bunden att det ska vara asp.net.

Jag försöker lägga in koden i en variabel som heter password och som svar får jag "Ditt lösenord är True"

```
password=Passwordeller = ""

Randomize

For i = 1 to 6
intNum = Int(10 * Rnd + 48)
intBig = Int(26 * Rnd + 65)
intSmall = Int(26 * Rnd + 97)
intRand = Int(3 * Rnd + 1)

Select Case intRand
Case 1
delPasseller = Chr(intNum)
Case 2
delPasseller = Chr(intBig)
Case 3
delPasseller = Chr(intSmall)
End Select

Passwordeller = Passwordeller & delPasseller

Next

response.write(Passwordeller & "<br>")
```

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

## #12 — @nders, 2004-11-04T11:20Z

Lite många = här:

```
password=Passwordeller = ""
```

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

## #13 — Stefan Holmberg, 2004-11-04T13:18Z

Är det "unikheten" som är viktig kan du alltid köra

string sPassword = System.Guid.NewGuid().ToString();

Kan man leva med att lösenordet ser ut ungefär som

b3a5f99a-c923-48e3-a710-7f91c87eea45

så är detta garanterat unikt i alla fall.

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

## #14 — desdecado, 2004-11-06T17:46Z

Du kan väl i det slumpade passordet infoga dagens datum+tid på ett snyggt och inte uppenbart sätt. Datum+Tid är ju något som bekant inte återkommer.

Tycker du att det är dumt att det går att klura ut att det finns ett datum instoppat i lösenordet så kan du hasha det (md5 kanske).

datum+tid+slump+salt skickas till md5-hashfunktionen.

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/96530-slumpa-ut-lösenord
