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.

InformationsquelleAutor Vor | 2013-07-08
Schreibe einen Kommentar