簡體   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