第九章:加密-hmac:密码消息签名与验证-二进制摘要
程序员文章站
2024-03-14 15:04:16
...
9.2.3 二进制摘要
前面的例子使用hexdigest()方法来生成可打印的摘要。hexdigest是digest()方法计算的值的一个不同表示,这是一个二进制,可以包括不可打印的字符(包括NUL)。有些Web服务(Google checkout、Amazon S3)会使用base64编码版本的二进制摘要而不是hexdigest。
import base64
import hmac
import hashlib
with open('lorem.txt','rb') as f:
body = f.read()
hash = hmac.new(
b'secret-shared-key-goes-here',
body,
hashlib.sha1,
)
digest = hash.digest()
print(base64.encodestring(digest))
base64编码串以一个换行符结束,在HTTP首部或其他格式敏感的上下文嵌入这个串时,通常需要去除这个换行符。
运行结果:
提示警告:不建议使用encodestring(),而使用encodebytes()。更改后的代码如下:
import base64
import hmac
import hashlib
with open('lorem.txt','rb') as f:
body = f.read()
hash = hmac.new(
b'secret-shared-key-goes-here',
body,
hashlib.sha1,
)
digest = hash.digest()
print(base64.encodebytes(digest))
运行结果:
b’3ETr0pwSMnOBBJr3ihKH4+bW5qs=\n’
上一篇: 大三心得
下一篇: unity中预览lua文件