Python3和hmac。如何處理不是二進(jìn)制的字符串
您可以使用字節(jié)字面量: b’key’
def _generate_signature(data): return hmac.new(b’key’, data, hashlib.sha256).hexdigest()
除此之外,請(qǐng)確保data也是字節(jié)。例如,如果從文件中讀取文件,則在打開(kāi)文件時(shí)需要使用binary模式(rb)。
解決方法我在Python2中有個(gè)腳本,效果很好。
def _generate_signature(data): return hmac.new(’key’,data,hashlib.sha256).hexdigest()
數(shù)據(jù)是的輸出json.dumps。
現(xiàn)在,如果我嘗試在Python 3中運(yùn)行相同類型的代碼,則會(huì)得到以下信息:
Traceback (most recent call last): File '<stdin>',line 1,in <module> File '/usr/lib/python3.4/hmac.py',line 144,in new return HMAC(key,msg,digestmod) File '/usr/lib/python3.4/hmac.py',line 42,in __init__ raise TypeError('key: expected bytes or bytearray,but got %r' %type(key).__name__)TypeError: key: expected bytes or bytearray,but got ’str’
如果我嘗試將密鑰轉(zhuǎn)換為字節(jié)這樣的操作:
bytes(’key’)
我懂了
Traceback (most recent call last): File '<stdin>',in <module>TypeError: string argument without an encoding
我仍在努力理解Python 3中的編碼。
相關(guān)文章:
1. ASP.NET MVC使用Boostrap實(shí)現(xiàn)產(chǎn)品展示、查詢、排序、分頁(yè)2. ASP.NET MVC使用JSAjaxFileUploader插件實(shí)現(xiàn)單文件上傳3. 使用ajax跨域調(diào)用springboot框架的api傳輸文件4. 詳解php反序列化5. 解決python logging遇到的坑 日志重復(fù)打印問(wèn)題6. Python 實(shí)現(xiàn)自動(dòng)化Excel報(bào)表的步驟7. Android實(shí)現(xiàn)下載進(jìn)度條效果8. PHP數(shù)組操作詳細(xì)解釋9. Python dict的常用方法示例代碼10. Java String不可變性實(shí)現(xiàn)原理解析
