簡體   English   中英

Pycrypto的Random.get_random_bytes和一個簡單的隨機字節生成器有什么區別?

[英]What is the difference between Pycrypto's Random.get_random_bytes and a simple random byte generator?

我在Pycrypto中遇到了此方法,該方法用於生成隨機字節:

from Crypto import Random
Random.get_random_bytes(5)

我想知道此方法與如下所示的簡單生成器有何不同:

import random
def get_random_bytes(N):
    ASCII = "".join(chr(x) for x in range(255))
    return "".join(random.choice(ASCII) for _ in range(n))

注意 :我的直覺是Pycrypto方法在密碼學上更“合理”。 查看random的文檔,它說它基於周期為2**19937-1的生成器。 查看Random.get_random_bytes ,它指出它能夠生成加密強度高的字節。 這意味着什么?

當然,我希望使用庫實現,而不是我自己的庫實現。 我只想了解其背后的密碼學概念。

對於密碼安全的隨機數生成器,任何輸出序列都不會為您提供有關下一個輸出將是什么的信息。

random基於Mersenne Twister。 它的內部狀態為624個32位數字。 給定1248個值的輸出,您將在某個時候知道整個狀態。 據此,您可以100%准確地確定將來的所有輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM