Python——os.urandom生成随机加密字符

os.urandom生成随机加密字符

小谈os.urandom

os.urandom(n)函数: 它是用来获取一个指定长度的bytes对象, 它实际上是在获取不同操作系统特定提供的随机源, 它可以被用来做随机加密的key使用。u 指的是 unpredictable(难以预料的), 真是看词便可知其意了。
os.urandom

使用os.urandom

先看看os.urandom生成的对象吧

import os

for i in range(10):
    os_urandom_obj = os.urandom(20)
    print('%s: %s' % (i+1, os_urandom_obj))

#################  结果  ##################

>>> 1: b'\xf8\xde\xc7CUh\xdf\x84\x1di\x13\xd5\x8d\xb1\x12\x8a\xc0\xed=\xe0'
>>> 2: b'P\xa1\xd1\xad?\xc3(S\x0b\x02e\xec\xb3\xe9A\xd64\xd9>N'
>>> 3: b'\x94\r-hW\xc1\xd5-\xfb\x17\xb44\xe3;tCX_G\x1c'
>>> 4: b'\xcd\x02\xaf"\xd6\xd0\x1a\xed\x1a\xe1\xc3\x0f\xc2\x85\xe2 \xde\xf4#g'
>>> 5: b'G3\x1bm\xe8\x02\xdb\xdfx\x1e\xc8\xdc\xc9bl\xc2\x9fN)\xab'
>>> 6: b'c*\x06\x11\xd1\xd0\xf00p$\x92\xf39\xc1L\xe5t\x8a8`'
>>> 7: b'{\xd1^\'\x92\x9c\\kY\x038C\xe3\xa9\xeb"\x9c\x14\xfc\x97'
>>> 8: b'\r\xdfk><\x93\xbe\xe3\t\x12\xaa\xc3~V>\x99\xb7\xbc\xcd"'
>>> 9: b'\xf5Z\x9f`T"Y\x13\xe3\x92\xe1v]D\xb5nv4\xe6?'
>>> 10: b'\xb7\xe5\xe6\x961b\xe2<0\xf1\xebbI\xfe\xb1\x18|\xc8R-'

对于这样的随机字节对象, 如何用来加密? 我选择用hashlib.md5, 看下面代码

import os, hashlib

for i in range(10):
    os_urandom_obj = os.urandom(20)
    hashlib_obj = hashlib.md5(os_urandom_obj).hexdigest()
    print('%s: %s' % (i+1, hashlib_obj))

#################  结果  ##################

>>> 1: 953fd004b2b7242f0ab21240678d17fc
>>> 2: 5bd39fb9fa3623c21c811dfb2d1876fa
>>> 3: 8367caa89f556c25074d39231a02da51
>>> 4: 10d6a6fca464b25c309ce012967ed852
>>> 5: 99cbf151b83e08e5f96d95ba579dc55c
>>> 6: 05a08a82b809b596e04e752ba2637a0d
>>> 7: 788a1538164790ee8fa4fa42c9adc0db
>>> 8: 1daa9305d66622813258647d1c4c19a2
>>> 9: 6259e8d2fafe2e4f97e2868122053b2a
>>> 10: 3f40aee2d127e2453042267bbb4f56f1

这里说说 hash.digest()hash.hexdigest() 的区别

hash.digest() 
返回摘要,作为二进制数据字符串值
>>> b'\xf5Z\x9f`T"Y\x13\xe3\x92\xe1v]D\xb5nv4\xe6?'

hash.hexdigest()  
返回摘要,作为十六进制数据字符串值
>>> 6259e8d2fafe2e4f97e2868122053b2a

这样生成的 hashlib_obj 对象就可以用来做加密的key了, 当然还有很多的方法, 这里就不一一阐述了。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Python中,`os.urandom()`函数用于获取一定长度的随机字节,可用于加密密钥的生成。它实际上是利用操作系统提供的随机源来获取随机数据。函数返回一个指定长度的`bytes`对象,适合用于加密和安全相关的应用。可以通过调用`os.urandom(n)`来获取指定长度的随机字节,其中`n`表示字节长度。该函数使用操作系统提供的随机源,因此生成的随机数具有不可预测性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python os.urandom()函数和十六进制\xhh的一些认识](https://blog.csdn.net/weixin_44015965/article/details/109538261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python——os.urandom生成随机加密字符](https://blog.csdn.net/weixin_51523373/article/details/117632091)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [pythonrandom --- 生成伪随机数](https://blog.csdn.net/weixin_39145520/article/details/129355706)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值