Avatar billede trp79 Nybegynder
07. maj 2002 - 16:57 Der er 9 kommentarer og
1 løsning

Generering af alfanummereisk password

hvis man skal generere et alfanummereisk password på 3-5 baseret på tilfældigheder?  etc. A35jH
Hvordan gør man det, rent kode-mæssigt?
Den skal gemmes som en tekststreng.
Avatar billede disky Nybegynder
07. maj 2002 - 17:11 #1
Sådanne her kan du gøre:

Den finder dog kun med tegn imellem a-h resten må du selv taste ind :)

/*
* RandomId.java
*
* Created on 7. maj 2002, 17:07
*/

import java.util.*;

/**
*
* @author  srr
* @version
*/
public class RandomId
{
    char[] tegn={'a','b','c','d','e','f','g','h'}; //tast selv videre
    Random rnd=new Random();
   
    private char generateChar()
    {
        int pos=rnd.nextInt(tegn.length);
        return tegn[pos];
    }
   
    /** Creates new RandomId */
    public RandomId()
    {
        rnd.setSeed(System.currentTimeMillis());
        String id="";
        int maxAntal=rnd.nextInt(3)+3;
        for(int x=0;x<maxAntal;x++)
        {
            id+=generateChar();
        }
        System.out.println("ID = "+id);
    }
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[])
    {
        new RandomId();
    }
   
}
Avatar billede codemon Nybegynder
07. maj 2002 - 17:17 #2
Brug java.util.Random til at generere tilfældige tal
Random.nextInt() retunerer tilfældigt heltal
x % length, sørger for at x er højst length-1
Math.abs(x), x skal altid være positiv

    public String genererPW(int length)
    {
        StringBuffer pwBuffer = new StringBuffer();
        String legalChars="0123456789abcdefghijklmnopqrstuvxyzæøåABCDEFGHIJKLMNOPQRSTUVXYZÆØÅ";
        Random rand = new Random();
       
        for (int i=0; i<length; i++)
            pwBuffer.append(legalChars.charAt(Math.abs(rand.nextInt()%legalChars.length())));
       
        System.out.println (pwBuffer);
        return pwBuffer.toString();
    }
Avatar billede disky Nybegynder
07. maj 2002 - 17:19 #3
codemon, hvorfor bruger du ikke rand.nextint(int n) istedet for modulus ?
Avatar billede codemon Nybegynder
07. maj 2002 - 17:25 #4
disky, du er java guru, så bliver det bare
pwBuffer.append( legalChars.charAt(rand.nextInt(legalChars.length())) );
Tilgengæld er det lidt nemmere at opskrive en streng i stedet for et char array.
Avatar billede disky Nybegynder
07. maj 2002 - 20:15 #5
det har du ret i.

trp97:
Hvorfor afviser du mit svar ?
Avatar billede disky Nybegynder
07. maj 2002 - 20:16 #6
Hvis der kommer flere gyldige svar så plejer man at acceptere dem alle, ellers skal du ikke regne med folk gider hjælpe dig i fremtiden
Avatar billede quaid Nybegynder
08. maj 2002 - 08:25 #7
trp79 Se evt lige dit spørgsmål fra igår. Jeg havde ikke set at du havde oprettet dette nye. Der oprettede du jo faktisk dette.
QD::
Avatar billede quaid Nybegynder
08. maj 2002 - 08:30 #8
Nå ja, men jeg kopierer lige den her over.Taget fra di spørgsmål igår.
QD::

Det var jo lige et spørgsmål mere :)
Her noget noget gammelt kode der bygger på javas random generator. Da det egentlig er en beregning randomgeneratoren bygger på, kan man vel ikke helt sige at den er random, men den er da god nok.
Du kan jo prøve at køre den, og evt lave den om til en metode, eller hvad du har brug for.
Som du ser afhænger passwordets længde af stop værdien i forløkken ( pt. 5 )
Håber du kan bruge det til noget.
QD::



import java.util.Random;

public class PassWord
{
   
    public static void main (String[] args)
    {
       
        Random generator = new Random();
        String password ="";
        for(int i = 0; i <5; i++)
        {
        int index = Math.abs (generator.nextInt()) % 37 + 0;       
        String [] alfabet = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","x","z","æ","ø","å","1","2","3","4","5","6","7","8","9","0"};
        String x = alfabet[index];
       
        password = password + x;
        }
        System.out.println(password);
       
    }
   
}
Avatar billede trp79 Nybegynder
08. maj 2002 - 10:01 #9
Jeg siger mange tak for alle svarene og beklager at jeg afviste dig svar Disky. Jeg troede faktisk bare man skulle give point det den respondent hvis svar man valgte at bruge. Det vil ikke ske igen. Jeg er villig til at oprette et spørgsmål med pointene hvis du vil?
Noget andet er... hvis man nu giver etc 60 points for et svar, og man acceptere 2 svar (som jeg burde have gjort) bliver pointene så ikke del 50/50 ?
Avatar billede disky Nybegynder
08. maj 2002 - 10:39 #10
trp97:
Pyt med det,

Yep hvis du accepterer to svar skulle den dele det 50/50
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester