2015-01-15 11 views
5

Tôi đang sử dụng băm của chuỗi cho gieo hạt bang ngẫu nhiên theo cách sau:băm xác định bằng Python 3

context = "string" 
seed = hash(context) % 4294967295 # This is necessary to keep the hash within allowed seed values 
np.random.seed(seed) 

Đây là may (cho sử dụng của tôi) không xác định giữa chạy bằng Python 3.3 trở lên. Tôi biết rằng tôi có thể đặt biến môi trường PYTHONHASHSEED thành giá trị số nguyên để lấy lại tính xác định, nhưng có lẽ tôi sẽ thích thứ gì đó ít bị hack hơn và sẽ không bỏ qua bảo mật bổ sung do băm ngẫu nhiên thêm vào. Gợi ý?

Trả lời

5

Sử dụng hàm băm có mục đích. zlib.adler32() là một lựa chọn tuyệt vời; cách khác, hãy xem mô-đun hashlib để có thêm tùy chọn.

+0

Hoàn hảo, cảm ơn! –

0

Buộc tích hợp sẵn của Python hash để xác định thực chất bị hacky. Nếu bạn muốn tránh sự tấn công, hãy sử dụng chức năng băm khác - xem ví dụ: https://docs.python.org/2/library/hashlib.html.

Các vấn đề liên quan