Hướng dẫn hmac.new python - trăn hmac.new

Mã nguồn: lib/hmac.py Lib/hmac.py


Mô -đun này thực hiện thuật toán HMAC như được mô tả bởi RFC 2104.RFC 2104.

________ 0 ________ 1 (khóa, msg = none, digestMod = '') ¶(key, msg=None, digestmod='')

Trả về một đối tượng HMAC mới. Khóa là một byte hoặc đối tượng bytearray cho khóa bí mật. Nếu MSG có mặt, phương thức gọi update(msg) được thực hiện. DigestMod là tên tiêu hóa, hàm tạo tiêu hóa hoặc mô -đun để đối tượng HMAC sử dụng. Nó có thể là bất kỳ tên phù hợp với hashlib.new(). Mặc dù vị trí lập luận của nó, nó được yêu cầu.

Thay đổi trong phiên bản 3.4: phím tham số có thể là đối tượng byte hoặc bytearray. Tham số MSG có thể thuộc bất kỳ loại nào được hỗ trợ bởi hashlib. Tham số DigestMod có thể là tên của thuật toán băm.Parameter key can be a bytes or bytearray object. Parameter msg can be of any type supported by hashlib. Parameter digestmod can be the name of a hash algorithm.

Không dùng nữa kể từ phiên bản 3.4, bị xóa trong phiên bản 3.8: MD5 dưới dạng tiêu hóa mặc định ngầm cho DigestMod không được dùng nữa. Tham số DigestMod hiện được yêu cầu. Vượt qua nó như một đối số từ khóa để tránh sự lúng túng khi bạn không có tin nhắn ban đầu.MD5 as implicit default digest for digestmod is deprecated. The digestmod parameter is now required. Pass it as a keyword argument to avoid awkwardness when you do not have an initial msg.

________ 0 ________ 6 (khóa, tin nhắn, tiêu hóa) ¶(key, msg, digest)

Trả về tiêu hóa của MSG cho khóa bí mật và tiêu hóa đã cho. Hàm tương đương với HMAC(key, msg, digest).digest(), nhưng sử dụng triển khai C hoặc nội tuyến được tối ưu hóa, nhanh hơn cho các thông báo phù hợp với bộ nhớ. Khóa tham số, MSG và DIGEST có cùng ý nghĩa như trong new().

Chi tiết triển khai CPYThon, triển khai C được tối ưu hóa chỉ được sử dụng khi Digest là một chuỗi và tên của thuật toán Digest, được hỗ trợ bởi OpenSSL.

Mới trong phiên bản 3.7.

Một đối tượng HMAC có các phương pháp sau:

________ 9 ________ 10 (MSG)(msg)

Cập nhật đối tượng HMAC với MSG. Các cuộc gọi lặp đi lặp lại tương đương với một cuộc gọi duy nhất với sự kết hợp của tất cả các đối số: new1 tương đương với new2.

Đã thay đổi trong phiên bản 3.4: Thông số MSG có thể thuộc bất kỳ loại nào được hỗ trợ bởi hashlib.Parameter msg can be of any type supported by hashlib.

________ 9 ________ 6 ()()

Trả về tiêu hóa của các byte được chuyển cho phương thức new6 cho đến nay. Đối tượng byte này sẽ có cùng độ dài với digest_size của tiêu hóa được cung cấp cho hàm tạo. Nó có thể chứa các byte không ASCII, bao gồm cả byte NUL.

Cảnh báo

Khi so sánh đầu ra của new7 với tiêu hóa được cung cấp bên ngoài trong thói quen xác minh, nên sử dụng hàm new8 thay vì toán tử new9 để giảm lỗ hổng trong các cuộc tấn công thời gian.

________ 9 ________ 21 ()()

Giống như new7 ngoại trừ tiêu hóa được trả về dưới dạng chuỗi gấp đôi chiều dài chỉ chứa các chữ số thập lục phân. Điều này có thể được sử dụng để trao đổi giá trị một cách an toàn trong email hoặc các môi trường không nhị phân khác.

Cảnh báo

Khi so sánh đầu ra của new7 với tiêu hóa được cung cấp bên ngoài trong thói quen xác minh, nên sử dụng hàm new8 thay vì toán tử new9 để giảm lỗ hổng trong các cuộc tấn công thời gian.

________ 9 ________ 21 ()()

Giống như new7 ngoại trừ tiêu hóa được trả về dưới dạng chuỗi gấp đôi chiều dài chỉ chứa các chữ số thập lục phân. Điều này có thể được sử dụng để trao đổi giá trị một cách an toàn trong email hoặc các môi trường không nhị phân khác.

Khi so sánh đầu ra của update(msg)3 với tiêu hóa được cung cấp bên ngoài trong thói quen xác minh, nên sử dụng hàm new8 thay vì toán tử new9 để giảm lỗ hổng trong các cuộc tấn công thời gian.

________ 9 ________ 27 ()

Trả về một bản sao (bản sao của bản sao) của đối tượng HMAC. Điều này có thể được sử dụng để tính toán hiệu quả các tiêu hóa của các chuỗi chia sẻ một chuỗi con ban đầu chung.

Đối tượng băm có các thuộc tính sau:

________ 9 ________ 29¶

Kích thước của tiêu hóa HMAC kết quả trong byte.

________ 9 ________ 31¶

Kích thước khối bên trong của thuật toán băm trong byte.

Kích thước của tiêu hóa HMAC kết quả trong byte.

________ 9 ________ 31¶The undocumented attributes hashlib.new()5, hashlib.new()6, and hashlib.new()7 are internal implementation details and will be removed in Python 3.10.

Kích thước khối bên trong của thuật toán băm trong byte.

Mới trong phiên bản 3.4.(a, b)

________ 9 ________ 33¶bytes-like object.

Tên kinh điển của HMAC này, luôn luôn thường xuyên, ví dụ: hashlib.new()4.

Không dùng nữa kể từ phiên bản 3.9: Các thuộc tính không có giấy tờ hashlib.new()5, hashlib.new()6 và hashlib.new()7 là các chi tiết triển khai nội bộ và sẽ bị xóa trong Python 3.10.

Mô -đun này cũng cung cấp chức năng trợ giúp sau:

________ 0 ________ 39 (a, b) ¶The function uses OpenSSL’s hashlib3 internally when available.

Trả lại hashlib0. Hàm này sử dụng một cách tiếp cận được thiết kế để ngăn chặn phân tích thời gian bằng cách tránh hành vi ngắn mạch dựa trên nội dung, giúp nó phù hợp với mật mã. Cả A và B phải đều thuộc cùng một loại: hashlib1 (chỉ ASCII, như ví dụ: được trả về bởi hashlib2) hoặc đối tượng giống như A byte.

Ghi chú

Nếu A và B có độ dài khác nhau, hoặc nếu xảy ra lỗi, một cuộc tấn công theo thời gian có thể tiết lộ thông tin về mặt lý thuyết về các loại và độ dài của A và B, nhưng không phải là giá trị của chúng.