Seite 1 von 1

Zufällige Passwörter erstellen

Verfasst: Do, 25.10.2012 01:00
von bugmenot
Hallo,

ich würde gerne mehrere 6-stellige Passwörter erstellen. Dafür würde ich gerne die Zeichen A-Z und 0-9 verwenden. Das Erstellen der Passwörter habe ich soweit schon hinbekommen, jedoch habe ich es nicht geschafft, dass sich die Zeichen nicht wiederholen. Sprich es sollten keine Zeichen in einem Passwort doppelt vorkommen (z.B. A5AZX9 oder 99Q1TZ).

Ich wäre sehr froh über einen Lösungsansatz. Vielen Dank!

Liebe Grüße,
bugmenot

Re: Zufällige Passwörter erstellen

Verfasst: Do, 25.10.2012 08:52
von bst
Hi,

versuche das mal so.

Code: Alles auswählen

A1: =myZufall()
cu, Bernd
--

Code: Alles auswählen

Function myZufall() As String
   Dim i As Integer, j As Integer, intZufall As Integer, sErg As String
   
   s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
   i = len(s)
   For j = 1 To 6
      intZufall = 1 + Int(Rnd() * i)
      sErg = sErg & Mid(s, intZufall, 1)
      Mid(s, intZufall, 1) = Mid(s, i, 1)
      i = i - 1
   Next
   myZufall = sErg
End Function

Re: Zufällige Passwörter erstellen

Verfasst: Do, 25.10.2012 08:59
von Karolus
Hallo

Per Passwort-funktion:

Pythoncode:

Code: Alles auswählen

from random import sample
from string import ascii_uppercase as upper, digits

def password( l ):
    return ''.join(sample( upper + digits, l ))
[edit: damit man das Dokument auch irgndwann mal ohne Probleme wieder öffnen kann muss im Basic-teil noch eine Fehlerroutine eingebaut werden ]
Basic-'schnittstelle':

Code: Alles auswählen

Const URL_Main = "vnd.sun.star.script:pass.py$"
Const URL_Args = "?language=Python&location=document"

Function passwort( len )
   on Error goto fff 
   doc = thisComponent
   sProv = doc.getScriptProvider
   sURL = URL_Main & "password" & URL_Args
   oScript = sProv.getScript(sURL)
   x = oScript.invoke( Array( len ),Array(),Array())
   passwort = x
   exit function
   fff:
   passwort = "bitte neuberechnen" 
   
end function  
Im angehängten Dokument ist beides dabei.
[edit: Dokument ausgetauscht[attachment=0]passs_neu.ods[/attachment]

Karolus

Re: Zufällige Passwörter erstellen

Verfasst: Do, 25.10.2012 11:26
von Stephan
Hallo Karolus,

das Beispiel finde ich interessant, auch weil ich kein Python kann.

Meinst Du du könntest das gesamte Beispiel einmal im Unterforum "Wissensarchiv" detaillierter darstellen im Sinne 'Wie verwende ich Python-Scripts und gebe diese in Dokumenten weiter?' Würde mich freuen.



Gruß
Stephan

Re: Zufällige Passwörter erstellen

Verfasst: Do, 25.10.2012 14:08
von Karolus
Hallo Stephan
Stephan hat geschrieben:Hallo Karolus,

das Beispiel finde ich interessant, auch weil ich kein Python kann.
Wie du oben siehst, ist der Pythoncode geradezu einfachst und selbsterklärend ( der Basiccode zum Erstellen der Schnittstelle ist so schon um einiges komplexer. ) - was ich damit ausdrücken will : Python sollte für jemanden wie dich relativ schnell erlernbar sein.
Stephan hat geschrieben:Meinst Du du könntest das gesamte Beispiel einmal im Unterforum "Wissensarchiv" detaillierter darstellen im Sinne 'Wie verwende ich Python-Scripts und gebe diese in Dokumenten weiter?' Würde mich freuen.
Das werde ich gerne tun ( im Winter wenn ich etwas mehr Zeit habe )
Könntest du evtl. in diesem Kontext dafür sorgen das hier Forum Syntaxhighlighting für Codesnippets zur Verfügung steht?
Code ist erheblich leichter zu lesen und zu verstehen in "farbiger" Darstellung.
syntaxhighlighting.png
syntaxhighlighting.png (28.17 KiB) 2609 mal betrachtet

Hier mal eine Kurzanleitung :
1. Coden mit externem Editor für Python (Idle, Pycharm, Wing IDE, etc. )

2. Speichern: im OOo/Lo-Python-Standard-pfad $USERCONFIG/3/user/Scripts/python/...

3. Pythonscript ins Dokument transferieren: z.B. mittels des kleinen aber feinen Dialogs von Hanya (natürlich auch in Python geschrieben ,-) ) ist das ganz einfach zu erledigen:
python-script-dialog.png
python-script-dialog.png (17.62 KiB) 2609 mal betrachtet
Karolus

Re: Zufällige Passwörter erstellen

Verfasst: Fr, 26.10.2012 10:16
von Stephan
Hallo Karolus,

was ich damit ausdrücken will : Python sollte für jemanden wie dich relativ schnell erlernbar sein.

das ist schon richtig, ich habe mich wohl etwas ungeschickt ausgedrückt. Eigentlich meinte ich das mir bei diesem Beispiel das erste Mal aufgefallen ist das hier Python-Code in einer Datei abgelegt ist (falls das bereits bei anderen Beispielen von Dir der Fall war habe ich einfach nicht darauf geachtet) und da ich zwar weiß wie ich den Code in das Archiv der Datei bekomme, aber annehme Viele wissen das nicht und Du oftmals hier Phyton-Beispiele postet, welche ggf. sinnvoll in eine Datei gepackt werden könnte, fände ich eine Erklärung nützlich die beschreibt:

-wie greife ich auf den Phytoncode überhaupt per Schaltfläche etc. zu
-wie rufe ich dazu den Code über StarBasic auf
-wie packe ich das in eine Datei


OK, ich sehe jetzt Deine Kurzanleitung und ohne die getestet zu haben würde ich wohl damit zurechtkommen, vielleicht ist aber eine etzwas ausführlichere Version in "Wissensarchiv" doch besser.


generell:
mich würde es auch freuen wenn Du in "Wissensarchiv" weitere Dinge über Python schreibst, denn Du veröffentlichst hier im Forum ja Etliches dazu und gleichzeitig ist Python für OOo/AOO/LO längst nicht besonders populär, Informationen also eher dünn gesät.
Schon ein Sammelthread 'Python-Beispiele' in "Wissensarchiv" wo Du auf die speziellen Threads hier im Forum, wo Du Phython-Code postest verlinkst wäre wohl hilfreich.
Ebenso hätte ich nichts dagegen den Thread "Informationen zur StarBasic-Programmierung" zu verallgemeinern und hier auf entsprechende Python-Links aufzunehmen (im Konkreten wäre 'Bedingung' das diese sinnvoll ausgewählt sind mit dem Ziel Anfängern einen Einstieg zu geben, also nicht so Viele aber gezielte Links)

Ich möchte dich hier zu nichts drängen, aber ich hielte diese Dinge wirklich von (auch allgemeinem) Interesse und ich persönlich nehme seit Langem wahr wieviel Du über Python-Programmierung in Bezug auf OOo/AOO/LO weisst.




Gruß
Stephan

Re: Zufällige Passwörter erstellen

Verfasst: Fr, 26.10.2012 19:45
von bugmenot
bst hat geschrieben:Hi,

versuche das mal so.

Code: Alles auswählen

A1: =myZufall()
cu, Bernd
--

Code: Alles auswählen

Function myZufall() As String
   Dim i As Integer, j As Integer, intZufall As Integer, sErg As String
   
   s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
   i = len(s)
   For j = 1 To 6
      intZufall = 1 + Int(Rnd() * i)
      sErg = sErg & Mid(s, intZufall, 1)
      Mid(s, intZufall, 1) = Mid(s, i, 1)
      i = i - 1
   Next
   myZufall = sErg
End Function
hallo.

Vielen Dank! Funktioniert perfekt! :)

lg bugmenot