哪种随机化方法更好?
Which randomization method is better?
pybitcointools (https://github.com/primal100/pybitcointools) generates a bitcoin private key using the following function (in main.py: https://github.com/primal100/pybitcointools/blob/master/cryptos/main.py):
import hashlib
def random_key():
entropy = random_string(32) \
+ str(random.randrange(2**256)) \
+ str(int(time.time() * 1000000))
return sha256(entropy)
在其他地方我看到了一个更简单的实现:
import os
os.urandom(32).hex()
不知哪个更随机,哪个更安全?
os.urandom() 使用专门为加密安全随机数设计的系统功能,并且远远优于您显示的其他功能。第一个函数看起来很像某人的 "roll your own" 版本的随机字符串,虽然他没有完全搞砸它,但它对于加密使用来说还不够好。
永远不要推出自己的加密货币!
pybitcointools (https://github.com/primal100/pybitcointools) generates a bitcoin private key using the following function (in main.py: https://github.com/primal100/pybitcointools/blob/master/cryptos/main.py):
import hashlib
def random_key():
entropy = random_string(32) \
+ str(random.randrange(2**256)) \
+ str(int(time.time() * 1000000))
return sha256(entropy)
在其他地方我看到了一个更简单的实现:
import os
os.urandom(32).hex()
不知哪个更随机,哪个更安全?
os.urandom() 使用专门为加密安全随机数设计的系统功能,并且远远优于您显示的其他功能。第一个函数看起来很像某人的 "roll your own" 版本的随机字符串,虽然他没有完全搞砸它,但它对于加密使用来说还不够好。
永远不要推出自己的加密货币!