Linux/Unix Benutzer Authentifizieren

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich weiß.. aber verstehs halt einfach nicht.
Es ist doch so: wenn du etwas mit Blowfish verschlüsseln willst, dann wirst du nach einem Passwort gefragt. Aber Concordia mag noch:
xl is the upper 32-bits and xr is the lower 32-bits.
Die Demo geht zwar von irgendwelchen Werten aus, aber sagt nicht warum.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich glaube jetzt weiß ich was zu meinst...

In den Methoden encrypt und decrypt werden xl, xr bzw. cl, cr erzeugt. z.B.:

Code: Alles auswählen

		# Use big endianess since that's what everyone else uses
		xl = ord (data[3]) | (ord (data[2]) << 8) | (ord (data[1]) << 16) | (ord (data[0]) << 24)
		xr = ord (data[7]) | (ord (data[6]) << 8) | (ord (data[5]) << 16) | (ord (data[4]) << 24)
Die Daten werden also zerlegt... (in Höher- und Niederwertige Bits ?!?!)

Doof ist, das es nur mit der Blockgröße von 8 Bytes funktioniert :( Leider gibt es aber keine Methode, damit Daten, die unterschiedlich lang sind, automatisch in 8 Byte Blöcke aufgeteilt bzw. zusammen gesetzt werden.

Ich dachte ursprünglich das ich das Modul für PyLucid nutzten könnte. Dafür brauche ich aber die Unterstützung für das Ver- und Endschlüsseln von Daten variabler Länge...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich hab mir mal eine Funktion geschrieben, die Daten in 8-Bytes Blöcke aufteilt. Wenn die Daten nicht gerade durch 8 Teilbar sind, werden hinten NULL-Bytes drangehangen:

Code: Alles auswählen

    def mkblocks ( self, data ):
        datalen = len(data)

        # Nächste Blockgröße in der data reinpaßt
        blocklen = int( math.ceil( datalen/8.0 ) ) * 8

        # data auffüllen, damit es exakt in die Blockgröße reinpaßt
        data += "\x00" * (blocklen - datalen)

        # in Blöcke von 8 Bytes aufteilen
        return re.findall( ".{8}", data )
Das geht doch mit sicherheit noch einfacher, oder??? Siehe hier: http://www.python-forum.de/viewtopic.php?t=3693

Die original Methoden encrypt() und decrypt() hab ich umbenannt in _encrypt() und _decrypt()... Die folgenden Methoden nehmen dann Daten in variabler Länge entgegen:

Code: Alles auswählen

    def encrypt (self, data):
        result = ""
        for block in self.mkblocks( data ):
            result += self._encrypt( block )
        return result

    def decrypt( self, data ):
        result = ""
        for block in self.mkblocks( data ):
            result += self._decrypt( block )
        return result.rstrip("\x00")
Dumm wäre natürlich, wenn die zu verschlüßelten Daten am Ende NULL-Bytes enthalten würde, dann würden die von rstrip() beim decrypten weggeschnitten... :cry:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Grad noch beim surfen gefunden: md5crypt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten