comment coder/décoder une chaîne simple

Je suis très nouveau pour le chiffrement, j'ai besoin de coder une simple chaîne de caractères comme 'ABC123' dans quelque chose de similaire à '3d3cf25845f3aae505bafbc1c8f16d0bfdea7d70f6b141c21726da8d'.

J'ai d'abord essayé ceci:

>>> import base64
>>> q = 'ABC123'
>>> w = base64.encodestring(q)
>>> w
'QUJDMTIz\n'

Mais c'est court, j'ai besoin de quelque chose de plus, que j'ai essayé ceci:

>>> import hashlib
>>> a = hashlib.sha224(q)
>>> a.hexdigest()
'3d3cf25845f3aae505bafbc1c8f16d0bfdea7d70f6b141c21726da8d'

C'est bien, mais maintenant je ne sais pas comment faire pour le convertir en arrière. Si quelqu'un peut m'aider feather avec cet exemple ou de proposer quelque chose d'autre, comment je peux encoder/décoder une petite chaîne en quelque chose de plus, ce serait génial.

Mise à JOUR

basé sur plockc réponse je l'ai fait, et il semble fonctionner:

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
Ce n'est pas un hachage de moyens.
La sécurité est dur. Quel est le scénario qui êtes-vous essayer de se défendre?
J'ai besoin de coder un id de compte en quelque chose de plus et de le décoder lorsque j'en ai besoin.
Ce que les attaquants êtes-vous essayer de se défendre contre? Voulez-vous avoir une clé secrète? Voulez-vous empêcher la mutation?
Oui, je pense que j'ai besoin d'une clé secrète.... Quelque chose qui me permettra d'encoder et de décoder de retour

OriginalL'auteur Vor | 2013-07-08