Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 下面这行代码的作用是什么?_Python_Python 2.7 - Fatal编程技术网

Python 下面这行代码的作用是什么?

Python 下面这行代码的作用是什么?,python,python-2.7,Python,Python 2.7,我正在阅读python中的一段代码,这时我看到了上面的代码行。 有人能解释一下上面的代码行是做什么的吗?这行代码创建了一个随机的16个字符的十六进制字符串 生成范围为[0.0,1.0]的随机浮点值 生成该随机值的字符串版本 >>> import random >>> random.random() 0.845295579640289 创建用字符串值初始化的哈希对象 >>> str(0.845295579640289) '0.84529

我正在阅读python中的一段代码,这时我看到了上面的代码行。
有人能解释一下上面的代码行是做什么的吗?

这行代码创建了一个随机的16个字符的十六进制字符串

  • 生成范围为[0.0,1.0]的随机浮点值

  • 生成该随机值的字符串版本

    >>> import random
    >>> random.random()
    0.845295579640289
    
  • 创建用字符串值初始化的哈希对象

    >>> str(0.845295579640289)
    '0.84529557964'
    
  • [:16]
    片段将挑选出前16个字符。此步骤将摘要减半为32个字符中的前16个字符:

    >>> hashlib.md5('0.84529557964').hexdigest()
    '5180b52225eac65bee1d6419e28ef397'
    
总而言之,这是一种相当冗长、低效且不安全的生成随机16个字符十六进制值的方法。我会使用
os.uradom()
来代替十六进制编码:

>>> '5180b52225eac65bee1d6419e28ef397'[:16]
'5180b52225eac65b'
这会产生一个随机的8字节字符串值,当用十六进制表示时,也会产生16个十六进制字符,完全是随机的


我的加密fu不是很好,但我觉得后一种形式在加密方面比将浮点伪随机值字符串的MD5哈希值减半强。

MD5
是一种加密-解密技术,它生成128位校验和,并以32位十六进制数的文本格式表示。
>>> import random
>>> random.random()
0.845295579640289
因此,
hashlib.md5(str(random.random()).hexdigest()将以字符串形式给出这个数字,然后
[:16]
将提取该散列的前16位数字并存储在
var
有关更多详细信息,请阅读这些参考资料


@martijin pieters,什么是md5?@shubham你的谷歌按钮坏了吗?md5是哈希算法@shubham@shubham:我所做的只是在这里向您展示了文档。下次,请先自己查找文档。也许您可以尝试执行该代码来查看?不知道Python,但我来了:获取一个随机字符串,然后用md5对其进行哈希获取一个16长度的十六进制字符串\
>>> '5180b52225eac65bee1d6419e28ef397'[:16]
'5180b52225eac65b'
>>> import os
>>> os.urandom(8).encode('hex')
'a8cb7b56d476b556'