具有低熵散列的异或 CSPRNG 字节的熵是多少?

What is the entropy of XORed CSPRNG bytes with low entropy hash?

假设我从 CSPRNG 中取出 256 位,并假设它是完美的 256 位熵。叫这个兰特。

然后假设我采用ASCII文本“密码”的sha256。调用此哈希。

现在我们对 rand 和 hash 进行 XOR。称之为混合。

mixed的熵比rand小吗?

如果有,有没有计算它的熵的公式?

以下示例:作为 rand 和 weak_hash

函数的混合熵是多少
#!/usr/bin/python3
import hashlib, os

def main():
    rand = int(os.urandom(32).hex(),16)
    weak_hash = int(hashlib.sha256(b'password').digest().hex(),16)
    mixed = ("%064x" % (rand ^ weak_hash))
    print(mixed)

main()

您描述的是一次一密本。如果密钥流:CSPRNG 的输出是完全随机的,那么密文也将与随机文本无法区分。

CSPRNG 的输出当然不是完全随机的。但是,如果 CSPRNG 的种子足够大,那么您将拥有与模拟一次一密的流密码相同的安全性。

所以输出 (mixed) 将与 CSPRNG 一样随机,只要 CSPRNG 没有进入之前遇到的状态。基本上只有在熵源失败时才会发生这种情况。