Tôi đã cố gắng hiểu và tìm hiểu xem tôi có nên sử dụng os.urandom()
hoặc Crypto.Random.new()
cho các số giả ngẫu nhiên mã hóa an toàn không.Thư viện pycrypto của Python để tạo số ngẫu nhiên và os.urandom
Các trang web sau đây dường như đề nghị sử dụng os.urandom()
:
https://github.com/mozilla/PyHawk/pull/13
nhưng tôi không thực sự hiểu tại sao và các trang web khác tôi tìm thấy trực tuyến không thực sự giải thích cái nào để sử dụng.
Nếu bất kỳ ai biết cái nào an toàn để sử dụng mật mã, tôi sẽ đánh giá cao lời khuyên!
Một trong những điều đặc biệt lo lắng là tôi dự định sử dụng nó để tạo số ngẫu nhiên nhưng tôi lo rằng một ngày nào đó tôi tạo ra một số ngẫu nhiên và ngày hôm sau trạng thái của máy phát sẽ giống nhau bắt đầu tạo các số "ngẫu nhiên" giống nhau.
Cả hai đều hoạt động. – U2EF1
@ U2EF1 Đối với một cái gì đó quan trọng và khó xác minh là tính chính xác của CSPRNG, bạn sẽ phải cung cấp nhiều hơn một chút so với xác nhận offhand. – delnan
['ssl.RAND_bytes()' docs] (http://docs.python.org/3.4/library/ssl.html#ssl.RAND_bytes) khuyên bạn nên đọc [Wikipedia] (http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator) để nhận các yêu cầu của CSPRNG. – jfs