python os.urandom()函数和十六进制\xhh的一些认识

python os.urandom()函数和十六进制\xhh的一些认识os urandom 与十六进制 xhhos urandom 函数在 python 官方文档中做出了这样的解释 Returnastrin 即返回一个长为 n 个 bytes 的 string 然后很适合用于加密

os.urandom()与十六进制\xhh

    os.urandom()函数在python官方文档中做出了这样的解释:
Return a string of n random bytes suitable for cryptographic use.
即返回一个长为n个bytes的string,然后很适合用于加密。python的这个函数实际上是在读取OS操作系统提供的随机源,关于加密应用暂且不考虑。
    这里作者就在使用之前,调用一个简单for循环打印一下它的输出

for i in range(10):
	print(os.urandom(i))

    它的输出:

b''
b'6'
b'Rj'
b'}\x13\xca'
b't\xc79w'
b'UF^f\x8b'
b'D\xf6\x14b\xd9n'
b'\xe4\xa5\xc1\t\x0b\xf4u'
b'\x8d\x94A\xd4qO\x07\x9d'
b'\x86Q\xe2\n\xfa\xaa\xf0\xd5H'

    为了方便确认这个是个字符串的长度,调整代码:

for i in range(10):
	print(len(os.urandom(i)))

    输出自然为每个字符串的长度,分别为0~9

0
1
2
3
4
5
6
7
8
9

    但是再翻上去看字符串的输出,有一个困惑的地方就是\x,查阅资料:引用_详情点我

\xhh 值为十六进制数hh的字符串

    即,在较长字符串中\x的作用域只有后面紧跟的两字符,而我们知道十六进制表示成二进制0000~1111占4bits,其中0000为十进制0、1111为十进制15。所以两个十六进制位数正好是8bits,即一个byte,是这样再看urandom的输出:

b''---0 byte
b'6'---1 byte
b'Rj'---2 bytes
b'}\x13\xca'---1+1+1---3 bytes
b't\xc79w'---1+1+2---4 bytes
b'UF^f\x8b'---4+1---5 bytes
b'D\xf6\x14b\xd9n'----1+1+1+1+1+1---6 bytes

    小知识又增加了!

    但是一个问题,makedown编辑如果想添加引用怎么操作啊,等一个有缘人!

编程小号
上一篇 2025-01-08 08:21
下一篇 2025-01-08 08:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/105464.html