SystemRandom auf welchen Plattformen verfügbar?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
heiliga horsd

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
pyuser
User
Beiträge: 4
Registriert: Samstag 31. März 2012, 15:53

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.
heiliga horsd

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.
BlackJack

@heiliga horsd: DOS vermute ich mal zum Beispiel. :-)
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

heiliga horsd hat geschrieben:Bei den BSD-Derivaten funktioniert das meiner Vermutung nach auch, aber bei Mac OS X bin ich mir da nicht sicher.
OSX ist ein BSD-Derivat.
heiliga horsd

BlackJack hat geschrieben:@heiliga horsd: DOS vermute ich mal zum Beispiel. :-)
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...
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Läuft problemlos unter OS X.

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
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.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

`SystemRandom()` greift intern auf die Generierung von Zufallszeichen durch `os.urandom()` zurück. Ich lese mal dessen Doku vor:
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.
Du kannst eine Fehlerausgabe / Fallback-Behandlung oder was auch immer also am Besten durch Abfangen des `NotImplementedError`s machen.

Oder interessieren dich wirklich explizit die Namen der einzelnen Betriebssystem (was du ja ursprünglich auch gefragt hattest)? Wenn ja, warum eigentlich?
heiliga horsd

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
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Bei älteren Windows Versionen wie Windows 98 wird die Verfügbarkeit von SystemRandom weniger ein Problem sein als die Verfügbarkeit eines Python Interpreters.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@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...
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
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

@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
Antworten