2010-07-22 4 views
2

Je souhaite convertir une chaîne en md5 et en base64. Voici ce que j'accomplis à ce jour:Comment encoder en base 64 la somme md5 d'une chaîne?

base64.urlsafe_b64encode("text..." + Var1 + "text..." + 
    hashlib.md5(Var2).hexdigest() + "text...") 

Python soulève un TypeError qui dit: Unicode objects must be encoded before hashing.

Edit: Voici ce que j'ai maintenant:

var1 = "hello" 
var2 = "world" 
b1 = var1.encode('utf-8') 
b2 = var2.encode('utf-8') 

result = "text" + 
    base64.urlsafe_b64encode("text" + b1 + "text" + 
    hashlib.md5(b2).hexdigest() + "text") + 
    "text" 
+0

Vous pouvez modifier le libellé de cette question à la chaîne 'Conversion à Base64 et MD5 il'. Je pense que c'est peut-être en arrière. – sigint

+0

En outre, vous trouverez peut-être une référence utile dans le chapitre [chapter on strings] de Python 3 (http://diveintopython3.org/strings.html). –

Répondre

2

Var1 et Var2 sont des chaînes (unicode), mais les md5() et urlsafe_b64encode() fonctions nécessitent anciens octets simples en entrée.

Vous devez convertir Var1 et Var2 en une séquence d'octets. Pour ce faire, vous devez indiquer à Python comment encoder la chaîne en tant que séquence d'octets. Pour les coder en UTF-8, vous pouvez le faire:

b1 = Var1.encode('utf-8') 
b2 = Var2.encode('utf-8') 

Vous pouvez ensuite passer ces octets-chaînes aux fonctions:

bmd5 = hashlib.md5(b2).digest() # get bytes instead of a string output 
b3 = "text...".encode('utf-8') # need to encode these as bytes too 
base64.urlsafe_b64encode(b3 + b1 ...) 
+0

J'ai invoqué la fonction bytes() sur Var1 et Var2 mais cela n'a pas aidé. A donné un TypeError: 'String argument sans encoding'. Edit: Maintenant, en utilisant la méthode encoder(), j'obtiens l'erreur: 'Impossible de convertir l'objet 'bytes' en str implicitement' – Dor

+0

Si vous voulez utiliser' bytes() ', vous devrez spécifier comment la chaîne doit être encodée. Par exemple: 'b1 = octets (Var1, 'utf-8')' ou 'b1 = octets (Var2, 'ascii')'. –

+0

S'il vous plaît voir mon édition. – Dor

Questions connexes