[Code] Kompakter Passwort Generator

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Mijikai
Beiträge: 698
Registriert: 25.09.2016 01:42

[Code] Kompakter Passwort Generator

Beitrag von Mijikai »

Viel Spaß <)

27.02.2019 Edit: Komplexer Generator hinzugefügt!

--------------------------------------------------

Komplexer Generator (hohe Sicherheit):

Das generierte Passwort hat immer mindestens einen kleinen und großen Buchstabe
sowie ein Sonderzeichen und eine Zahl.

Nutzt die sichere Funktion CryptRandom()!

Code: Alles auswählen

EnableExplicit

;Compact RandomPassword.b (komplex) by Mijikai
;Password length 4 - 128
;PB v.5.62

Procedure.s RandomPassword(Length.i)
  Protected Dim block.a(127)
  Protected index.i
  Protected password.s
  Protected *key.Ascii
  If Length > 3 And Length < 129
    If OpenCryptRandom()
      block(0) = CryptRandom(9)
      block(1) = CryptRandom(25) + 10
      block(2) = CryptRandom(25) + 36
      block(3) = CryptRandom(29) + 52
      For index = 4 To Length - 1
        block(index) = CryptRandom(91)
      Next
      RandomizeArray(block(),0,Length - 1)
      For index = 0 To Length - 1
        *key = ?randompassword + block(index) 
        password + Chr(*key\a)
      Next
      CloseCryptRandom()
      ProcedureReturn password 
    Else
      ProcedureReturn #Null$;<- DONT USE WITH PB v.5.70!
    EndIf 
  Else
    ProcedureReturn #Null$;<- DONT USE WITH PB v.5.70!
  EndIf
  randompassword:
  !db '0123456789'
  !db 'abcdefghijklmnopqrstuvwxyz'
  !db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  !db 0x21,0x22,0x23,0x24,0x25,0x26
  !db 0x27,0x28,0x29,0x2A,0x2B,0x2C
  !db 0x2D,0x2E,0x2F,0x3A,0x3B,0x3C
  !db 0x3D,0x3E,0x3F,0x40,0x5B,0x5D
  !db 0x5E,0x5F,0x7B,0x7C,0x7D,0x7E
EndProcedure

Debug RandomPassword(64)

End
__________________________________________________

Einfacher Generator (mittlere Sicherheit):

Das generierte Passwort hat immer mindestens einen kleinen und großen
Buchstabe sowie ein Sonderzeichen.

Es werden Längen von 4 - 128 unterstützt.

Code:

Code: Alles auswählen

EnableExplicit

;Compact RandomPassword.a (einfach) by Mijikai
;Password length 4 - 128
;PB v.5.62

Procedure.s RandomPassword(Length.i)
  Protected Dim block.a(127)
  Protected index.i
  Protected password.s
  Protected *key.Ascii
  If Length > 3 And Length < 129
    block(0) = Random(25,0)
    block(1) = Random(51,26)
    block(2) = Random(81,52)
    For index = 3 To Length - 1
      block(index) = Random(81,0)
    Next
    RandomizeArray(block(),0,Length - 1)
    For index = 0 To Length - 1
      *key = ?randompassword + block(index) 
      password + Chr(*key\a)
    Next
    ProcedureReturn password
  Else
    ProcedureReturn #Null$;<- DONT USE WITH PB v.5.70!
  EndIf
  randompassword:
  !db 'abcdefghijklmnopqrstuvwxyz'
  !db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  !db 0x21,0x22,0x23,0x24,0x25,0x26
  !db 0x27,0x28,0x29,0x2A,0x2B,0x2C
  !db 0x2D,0x2E,0x2F,0x3A,0x3B,0x3C
  !db 0x3D,0x3E,0x3F,0x40,0x5B,0x5D
  !db 0x5E,0x5F,0x7B,0x7C,0x7D,0x7E
EndProcedure

Debug RandomPassword(64)

End
Zuletzt geändert von Mijikai am 28.02.2019 12:09, insgesamt 5-mal geändert.
sibru
Beiträge: 260
Registriert: 15.09.2004 18:11
Wohnort: hamburg

Re: [Code] Kompakter Passwort Generator

Beitrag von sibru »

Danke !!! :allright:

gut abgepasst, brauche ich gerade... :)
Bild Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8390
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 20.10
NVIDIA Quadro P2200
Wohnort: Saarbrücken
Kontaktdaten:

Re: [Code] Kompakter Passwort Generator

Beitrag von NicTheQuick »

Um kryptografisch sichere Passwörter zu erzeugen, bau am besten CryptRandomData() ein. Nur damit stellst du sicher, dass sich keine Passwörter wiederholen können bzw. dass sie jemand mit dem richtigen Startwert (siehe RandomSeed()) erneut erzeugen kann.
Bild
Benutzeravatar
Mijikai
Beiträge: 698
Registriert: 25.09.2016 01:42

Re: [Code] Kompakter Passwort Generator

Beitrag von Mijikai »

NicTheQuick hat geschrieben:Um kryptografisch sichere Passwörter zu erzeugen, bau am besten CryptRandomData() ein. Nur damit stellst du sicher, dass sich keine Passwörter wiederholen können bzw. dass sie jemand mit dem richtigen Startwert (siehe RandomSeed()) erneut erzeugen kann.
Danke für den Hinweis, hab eine weitere Version geschrieben und meinen Post geupdated :)
Jetzt gibt es 2 Varianten - hohe und mittlere Sicherheit.
Antworten