繁体   English   中英

我如何为 aes 加密生成随机密钥

[英]How can i generate random key for aes encryption

我是python的新手。 我正在处理有关使用 AES 进行文件加密的代码

https://stackoverflow.com/a/20868265/2955896

它使用此密钥进行加密

key = b'\xbf\xc0\x85)\x10nc\x94\x02)j\xdf\xcb\xc4\x94\x9d(\x9e[EX\xc8\xd5\xbfI{\xa2$\x05(\xd5\x18'

如何随机生成密钥以使无法解密?

最实用的方法是从操作系统提供的任何随机设备读取随机数据。 这可以通过使用os.random()方便地访问;

In [1]: import os

In [2]: os.urandom(128)[:10]
Out[2]: b'\xee&\x06s?\x8d\xfcI=\x07'

(为方便起见,仅显示前 10 个字节。)

每次调用它都会返回不同的数据;

In [3]: os.urandom(128)[:10]
Out[3]: b')\x12TQ\xf5\xa3G\xe2\xb00'

In [4]: os.urandom(128)[:10]
Out[4]: b'\xce\xba\xd2Gr\x8c6\xba\xb7\x91'

In [5]: os.urandom(128)[:10]
Out[5]: b'~\x00\xca\x0c=\xd3\xff\xef\xc8\x14'

In [6]: os.urandom(128)[:10]
Out[6]: b'\xb0~vb"\xd6(F\xb7v'

编辑:

从 Python 3.6 开始,您应该将secrets模块用于加密强随机数。 例如:

In [1]: import secrets

In [2]: secrets.token_urlsafe(32)
Out[2]: 'SgkZmSckZcSB3a4uK-SFPN6vevgx231sHs-aE5GlP-g'

截至 2015 年,32 是请求的默认字节数;

In [3]: secrets.token_urlsafe()
Out[3]: 'qbmwK_2-_f6UQOTLJcweYcwZQze8lo3dtIuEKWhpb_w'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM