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

本文介绍了os.urandom用于生成随机加密密钥的方法,os.urandom返回的bytes对象可以作为加密的key。通过示例展示了将os.urandom生成的字节串与hashlib.md5结合,用于加密过程,并探讨了hash.digest()与hash.hexdigest()的区别。通过这种方法,可以创建安全的加密key,进一步应用于信息安全领域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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了, 当然还有很多的方法, 这里就不一一阐述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值