Hallo,
auf welchen Systemen ist SystemRandom verfügbar? Ich brauche echte Zufallszahlen und bin heilfroh, dass Python etwas in der Stdlib hat, was mir echte Zufallszahlen liefert. Nun wäre es für mich wichtig zu wissen, auf welchen Systemen auer Windows und Linux das noch funktioniert. Bei den BSD-Derivaten funktioniert das meiner Vermutung nach auch, aber bei Mac OS X bin ich mir da nicht sicher. Vielleicht kann mir hier jemand nähere Auskunft geben?
Lg HH
SystemRandom auf welchen Plattformen verfügbar?
Echte Zufallszahlen wirst du nicht bekommen, sondern nur kryptographisch sichere Pseudozufallszahlen (via CSPRNG).
Schaue dir mal den Abschnitt Python unter http://en.wikipedia.org/wiki/Random_password_generator an.
Schaue dir mal den Abschnitt Python unter http://en.wikipedia.org/wiki/Random_password_generator an.
Danke für den Link!
Ich will die Zufallszahlen auch kryptographisch nutzen, von dem her reicht mir der "Zufallsgrad". In dem Link steht, dass OS X auch unterstützt wird. Trotzdem würde mich interessieren, unter welchen Betriebssystemen diese Methode nicht funktioniert.
Ich will die Zufallszahlen auch kryptographisch nutzen, von dem her reicht mir der "Zufallsgrad". In dem Link steht, dass OS X auch unterstützt wird. Trotzdem würde mich interessieren, unter welchen Betriebssystemen diese Methode nicht funktioniert.
Ja OK, aber das ist ja jetzt kein BS das von ner größeren Nutzerbasis im alltäglichen Gebrauch verwendet wird sag ich mal... Die Windows 3 Zeiten sind ja schon seit einiger Zeit um...BlackJack hat geschrieben:@heiliga horsd: DOS vermute ich mal zum Beispiel.
Läuft problemlos unter OS X.
Prinzipiell kann man erwarten dass es überall funktioniert. Auf den obskuren Systemen auf denen es nicht läuft würde ich einfach eine Exception werfen.
Code: Alles auswählen
DasIch at Daniels-MacBook-Air in awwparse on git:master? working on awwparse
% python
Python 2.7.1 (r271:86832, Jul 31 2011, 19:30:53)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from random import SystemRandom
>>> SystemRandom().random()
0.03604346283017357
`SystemRandom()` greift intern auf die Generierung von Zufallszeichen durch `os.urandom()` zurück. Ich lese mal dessen Doku vor:
Oder interessieren dich wirklich explizit die Namen der einzelnen Betriebssystem (was du ja ursprünglich auch gefragt hattest)? Wenn ja, warum eigentlich?
Du kannst eine Fehlerausgabe / Fallback-Behandlung oder was auch immer also am Besten durch Abfangen des `NotImplementedError`s machen.On a UNIX-like system this will query /dev/urandom, and on Windows it will use CryptGenRandom. If a randomness source is not found, NotImplementedError will be raised.
Oder interessieren dich wirklich explizit die Namen der einzelnen Betriebssystem (was du ja ursprünglich auch gefragt hattest)? Wenn ja, warum eigentlich?
Nunja, ich wollte halt nicht, dass jemand das Programm, welches ich schreibe, auf seinem PC ausführt und anschließend wird das von dem System nicht unterstützt. Aber da wohl die wenigsten heutzutage noch mit DOS arbeiten werden und die meistgenutzten Betriebssysteme eh Windows, Linux und OSX sind, ist das Problem an sich geklärt. Da Solaris und BSD ja auch unixoide Systeme sind werd ich das Problem wohl da auch nicht haben. Nur die älteren Windows-Versionen wären da noch interessant zu wissen, immerhin sind ja nach wie vor Leute mit Windows 98 unterwegs...
@DasIch: Also bis Python 2.5 wurde Windows 98 noch offiziell unterstützt. `SystemRandom()` wiederum gibt es seit Python 2.4. Und bevor du jetzt einwendest, das nutze ja keiner mehr, wegen Sicherheitsaspekten und so: Nun ja, einem Windows 98 User kann man das durchaus zutrauen. Bleibt aber trotzdem die Frage, inwiefern diese Konstellation hier wirklich praxisrelevant ist...
Falls es dir um eine README-Datei geht, welche den Benutzer über die Anforderungen informiert, dann mach doch eine Art Whitelist: Erwähne die Systeme, von denen bekannt ist, dass dein Programm mit ihnen funktioniert und dass die Liste ständig erweitert wird bzw man sich als User melden soll, sofern das eigene System noch nicht erwähnt wurde.heiliga horsd hat geschrieben:Nunja, ich wollte halt nicht, dass jemand das Programm, welches ich schreibe, auf seinem PC ausführt und anschließend wird das von dem System nicht unterstützt.
@snafu: Ja, das wäre eine gute Idee. Wahrscheinlich werde ich auch den Fehler fangen und ne Meldung ausgeben, dass das System nicht unterstützt wird.
Problem wäre somit geklärt, danke an alle!
Gruß HH
Problem wäre somit geklärt, danke an alle!
Gruß HH