我目前正在用网络摄像头拍摄一张照片,对图像的输出字节进行散列(sha-512)。这是一个“真”的随机数发生器吗?在ent
测试中,它的性能很差。我怀疑这是因为它没有任何特殊字符,只有字母和数字。有什么哈希算法比sha-512更适合这种情况?
这是我的密码:
import cv2
import hashlib
webcam = cv2.VideoCapture(0)
check, frame = webcam.read()
framebytes = frame.tobytes()
hash = sha512(str(framebytes).encode('utf-8')).hexdigest()
(在这里谈论hash
)
我目前正在一个Web服务器(flask)中使用它,所以我无法提供字节(尝试创建一个随机api,用作种子)
如果您真的想这样做,那么您的代码基本上是正确的。除:
例如:
也就是说,您最好使用^{} ,或者像^{} 这样的包装器,让您的操作系统来处理事情。此服务受OpenSSL等程序的信任,并且应该比您正在尝试的更可靠
如果你真的想使用网络摄像头,我建议你将熵混合到系统中,同时仍然使用
urandom
来获取随机值。请注意,在Linux下,您可以将网络摄像头(甚至原始网络摄像头数据)中的散列字节写入/dev/random
,以加密安全的方式将其合并如果你真的想自己动手,我建议你看看Fortuna PRNG,看看更大的系统是如何处理熵提取和它们试图防御的攻击的
相关问题 更多 >
编程相关推荐