2009-08-25 25 views
7

Có cách nào tôi có thể tính toán giá trị băm SHA256 trong Python 2.4 không? (Tôi nhấn mạnh: Python 2.4) Tôi biết làm thế nào để làm điều đó trong Python 2.5 nhưng tiếc là nó không có sẵn trên máy chủ của tôi và nâng cấp sẽ không được thực hiện. Tôi có cùng vấn đề với anh chàng trong câu hỏi this, nhưng sử dụng Python 2.4. Chúng tôi rất trân trọng bất kỳ sự giúp đỡ nào.Hàm băm SHA256 trong Python 2.4

EDIT: Xin lỗi, ý tôi là SHA 256. Tôi đã quá vội vàng. Xin lỗi lần nữa.

Trả lời

10

Có thể. Với Python 2.4, có mô-đun SHA-1 thực hiện chính xác điều này. Xem the documentation.

Tuy nhiên, hãy nhớ rằng mã nhập từ mô-đun này sẽ gây ra Khử haoWarnings khi chạy bằng Python mới hơn.

Ok, khi yêu cầu được siết chặt thành SHA-256, sử dụng mô-đun SHA-1 trong thư viện chuẩn là không đủ. Tôi muốn đề nghị kiểm tra ra pycrypto, nó có một thực hiện SHA-256. Ngoài ra còn có các cửa sổ nhị phân phát hành để phù hợp với Pythons cũ hơn, theo các liên kết từ Andrew Kuchlings old PyCrypto page.

+0

Nếu bạn đang băm mật khẩu, tôi sẽ không khuyên bạn sử dụng SHA-1, bao giờ hết. Nó bị nứt và không được coi là không an toàn. Sử dụng MD5 để băm mật khẩu cũng được coi là không an toàn. Nếu bạn không thể truy cập các thư viện băm mới trong các phiên bản Python gần đây, tôi khuyên bạn nên thực hiện một cuộc gọi hệ thống đến 'ssh-keygen' (trên Linux) và đọc trong tệp mà nó tạo ra. – MikeyE

+0

Đó là một chút phóng đại để nói "bao giờ", trở lại trong năm 2009 khi câu hỏi và câu trả lời được viết SHA1 là OK. Để tham khảo, cách tiếp cận lý thuyết đầu tiên để tạo ra các băm SHA1 do Marc Stevens va chạm không được xuất bản cho đến năm 2013. Nhưng yeah: biết băm của bạn và hiểu các tác động an ninh của các lựa chọn của bạn. –

+0

Tôi nghe bạn. Khi tôi nói "bao giờ", ý tôi là "từ thời điểm này về phía trước". Nhưng, tôi nghĩ đó là ngụ ý. Bạn làm cho một điểm tốt. Tôi nghĩ câu trả lời của bạn rất tốt khi được viết. Có lẽ nó có thể được sửa đổi để được lên với thời gian? – MikeyE

8

Bạn có thể sử dụng các mô-đun sha, nếu bạn muốn ở lại tương thích, bạn có thể nhập nó như thế này:

try: 
    from hashlib import sha1 
except ImportError: 
    from sha import sha as sha1 
+0

Mã được đăng tính toán SHA-1 và vô ích khi tính SHA-256. – pts