Skip to content Skip to sidebar Skip to footer

Unicode Objects Must Be Encoded Before Hashing Error

Questions dealing with similar issues: SO 1, SO 2, SO 3. I've tried their answers, encoding pretty much any string to utf-8, but hmac still tells me to encode my unicoe chars. The

Solution 1:

"Parameter msg can be of any type supported by hashlib.".

"Note: Feeding string objects into is not supported, as hashes work on bytes, not on characters.".

Thus, your message must be of type bytes. Use .encode() on the message wich will give you the bytes object.

Note: This is only necessary for python 3!

To encode the digest to base64 use the base64 library.

importbase64signature_b64= base64.b64encode(signature.digest())

Solution 2:

For Python 3.9, I was getting the same error,

self._inner.update(msg) TypeError: Unicode-objects must be encoded before hashing

The following worked for me,

signature = hmac.new(key.encode('utf-8'), msg.encode('utf-8'), hashlib.sha256)
auth_token = str(signature.hexdigest())

Post a Comment for "Unicode Objects Must Be Encoded Before Hashing Error"