codieren/decodieren einer einfachen string
Ich bin sehr neu in Verschlüsselung, brauche ich zum codieren einer einfachen string wie 'ABC123'
in so etwas ähnliches '3d3cf25845f3aae505bafbc1c8f16d0bfdea7d70f6b141c21726da8d'
.
Habe ich zuerst so probiert:
>>> import base64
>>> q = 'ABC123'
>>> w = base64.encodestring(q)
>>> w
'QUJDMTIz\n'
Aber es ist zu kurz, ich brauche etwas länger, als ich es so probiert:
>>> import hashlib
>>> a = hashlib.sha224(q)
>>> a.hexdigest()
'3d3cf25845f3aae505bafbc1c8f16d0bfdea7d70f6b141c21726da8d'
Ist das gut, aber jetzt weiß ich nicht, wie es zu konvertieren zurück. Wenn jemand mir helfen kann eather mit diesem Beispiel, oder etwas anderes suggerieren, wie kann ich das codieren/decodieren einer kleinen string in eine etwas mehr, wäre toll.
UPDATE
basierend auf plockc
Antwort, die ich Tat dies, und es scheint zu funktionieren:
from Crypto.Cipher import AES # encryption library
BLOCK_SIZE = 32
# the character used for padding--with a block cipher such as AES, the value
# you encrypt must be a multiple of BLOCK_SIZE in length. This character is
# used to ensure that your value is always a multiple of BLOCK_SIZE
PADDING = '{'
# one-liner to sufficiently pad the text to be encrypted
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
# one-liners to encrypt/encode and decrypt/decode a string
# encrypt with AES, encode with base64
EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)
# create a cipher object using the random secret
cipher = AES.new('aaaaaaaaaa123456')
# encode a string
encoded = EncodeAES(cipher, 'ABC123')
print 'Encrypted string: %s' % encoded
# decode the encoded string
decoded = DecodeAES(cipher, encoded)
print 'Decrypted string: %s' % decoded
- Das ist nicht das, was ein hash bedeutet.
- Sicherheit ist schwer. Was Heist versuchen Sie zu verteidigen?
- Brauche ich zum codieren einer Konto-id, die in etwas länger und als entschlüsseln es zurück, wenn ich es brauche.
- Was die Angreifer wollen Sie verteidigen gegen? Wollen Sie einen geheimen Schlüssel? Wollen Sie verhindern, dass die mutation?
- Ja, ich glaube, ich brauche einen geheimen Schlüssel.... Etwas, das möchte ich verschlüsseln und entschlüsseln es zurück
- AES ist eine block-Größe von 16 Byte, 32.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie wahrscheinlich zu erarbeiten, wie Sie gehen, es zu benutzen und warum, wie du gerade die Büchse der Pandora geöffnet 🙂
Einer Codierung ist reversibel und sollte nur verwendet werden, um Daten zu fit-in etwas anderes (wie base-64 Binär-Daten, wenn Sie können nur text), wird ein hash (wie sha224) soll nicht umkehrbar sein.
Wenn Sie überprüfen möchten, ob ein Benutzer ein Passwort eingeben, du Hasch es (mit wie sha224) und speichern des hash, dann, wenn der Benutzer das Kennwort wieder, Sie hash Ihre Eingabe und vergleichen. Dies ist die vereinfachte version, die Sie auch brauchen, um hinzuzufügen, "Salz" zu vermeiden, ein einfaches "Wörterbuch-Angriff". Ich werde nicht erarbeiten, wie das war nicht die Frage, die Sie gefragt.
Schnell die Antwort auf Ihre Frage, die Sie möchten, dass eine Krypto-Bibliothek, wie die cipher AES-128, die einen geheimen Schlüssel und mit dem Schlüssel können Sie eine Wiederherstellung der ursprünglichen Daten. Es werden einige details in der Bibliothek auf, wie um den Schlüssel zu erstellen (es muss eine bestimmte Länge und manipuliert wird, um es zu machen, dass die Länge). Wenn Ihr Schlüssel basiert auf einfachen Passwörter, schau auf PBKDF2, die eine starke Verschlüsselung Schlüssel aus einem schwachen Passwort ein.
Nicht zu verwechseln mit der hmac-Verschlüsselung (hmac verwendet eine andere Funktion, wie der Hash-Funktion sha224), wenn der Empfänger der Nachrichten Aktien einen der hmac-Schlüssel mit dem sender können Sie "authentifizieren", dass die Nachricht vom Absender, und es kam ohne Veränderung.
Glück!
P. S. hier ist ein gutes Buch, wenn Sie wirklich wollen, zu Graben beginnen in:
Cryptography Engineering: Design Principles and Practical Applications
Eine beliebte Verwandte Antwort:
https://stackoverflow.com/a/4948393/1322463
Wikipedia hat gute Artikel zu.