python - 我可以将两个字符串散列为一个散列吗?

标签 python hash sha256

我是 Python 的新手,想创建一些将两个字符串散列在一起的代码。特别是对于我的情况,我想散列文件的散列和比特币 block 的散列。下面的代码显然不起作用,因为 sha256() 只接受一个参数。你们知道吗?

谢谢,

from __future__ import print_function
import blocktrail, time, csv, hashlib, sys

client = blocktrail.APIClient(api_key="x", api_secret="x", network="BTC", testnet=False)
address = client.address('x')

latest_block = client.block_latest()
hash_list = []
h = latest_block['hash']
sha256 = hashlib.sha256()
BUF_SIZE = 65536
print("test")

with open('entries#x.csv', 'rb') as entriesfile:
    buf = entriesfile.read(BUF_SIZE)
    while len(buf) > 0:
        sha256.update(buf)
        buf = entriesfile.read(BUF_SIZE)
    print(sha256.hexdigest())

entryhash = sha256.hexdigest()

hashofhe = hashlib.sha256(b'entryhash', 'h')

最佳答案

当我正在寻找关于同一主题的建议时,只是对此发表评论:

  • 连接两个字符串并进行散列不一定是个好主意,因为您很容易发生冲突:"hello", "world" 将具有与 "hel", "相同的散列loworld”.
  • 如果您非常了解您的字符串,您可以找到一个简洁的分隔符来避免这种情况。
  • 另一种选择是在连接之前预先添加每个字符串的大小,这样您最终会散列 "5hello5world""3hel8loworld" 并且不太可能产生碰撞。
  • 如果您只想实现__hash__,您可以执行hash(hash(a) + hash(b))

关于python - 我可以将两个字符串散列为一个散列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32638581/

相关文章:

ruby - IRB 中的哈希检查?

encryption - 如何解密 Telegram 网络请求

java - 使用 Java 中的 SHA-256 算法比较使用相同盐的两个哈希密码,Spring 安全性?

python - 优化 pandas 列中的函数计算?

Python mysqldb 返回插入的行,但 mysql 返回一个空集

mysql - mysql是按需返回数据,还是全部返回?为什么遍历数据比访问数据慢?

用于登录密码的 PHP 盐和哈希 SHA256

python - 跨gdb找不到python

python - elasticsearch-dsl-py 查询格式

security - 此 SSO 实现安全吗?