如何在Python中散列变量?

 亲爱的常青藤先生 发布于 2023-01-01 16:10

这个例子正常工作例如:

import hashlib
m = hashlib.md5()
m.update(b"Nobody inspects")
r= m.digest()
print(r)

现在,我想用变量做同样的事情:var= "hash me this text, please".我怎么能按照例子的相同逻辑做到这一点?

1 个回答
  • hash.update()方法总是需要字节.

    首先将unicode文本编码为字节; 你编码是一个应用程序决定,但如果你想做的只是指纹文本,那么UTF-8是一个很好的选择:

    m.update(var.encode('utf8')) 
    

    但是,当你不这样做时,你得到的例外很明显:

    >>> import hashlib
    >>> hashlib.md5().update('foo')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: Unicode-objects must be encoded before hashing
    

    如果要获取文件的哈希值,请以二进制模式打开文件:

    from functools import partial
    
    hash = hashlib.md5()
    with open(filename, 'rb') as binfile:
        for chunk in iter(binfile, partial(binfile.read, 2048)):
            hash.update(chunk)
    print hash.hexdigest()
    

    2023-01-01 16:13 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有