我有点困惑,加密函数的参数是一个字符串.我应该简单地用str()包装非字符串参数,例如
hashlib.sha256(str(user_id)+str(expiry_time)) hmac.new(str(random.randbits(256)))
(暂时忽略random.randbits()可能在加密方面不好).编辑:我意识到hmac的例子是愚蠢的,因为我没有把钥匙存放在任何地方!
好吧,通常哈希函数(通常是加密函数)对字节起作用.Python字符串基本上是字节字符串.如果要计算某个对象的哈希值,则必须将其转换为字符串表示形式.如果要检查哈希值是否正确,请确保稍后应用相同的操作.并确保您的字符串表示不包含任何您不想检查的更改数据.
编辑:由于流行的请求,提醒一下Python unicode字符串不包含字节而是unicode代码点.每个unicode代码点包含多个字节(2或4,具体取决于Python解释器的编译方式).Python字符串只包含字节.所以Python字符串(类型str)是与字节数组最相似的类型.