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:
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ố: new
1 tương đương với new
2.
Đã 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
.
Trả về tiêu hóa của các byte được chuyển cho phương thức new
6 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 new
7 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 new
8 thay vì toán tử new
9 để giảm lỗ hổng trong các cuộc tấn công thời gian.
Giống như new
7 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 new
7 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 new
8 thay vì toán tử new
9 để giảm lỗ hổng trong các cuộc tấn công thời gian.
Giống như new
7 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 new
8 thay vì toán tử new
9 để giảm lỗ hổng trong các cuộc tấn công thời gian.
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 hashlib
3 internally when
available.
Trả lại hashlib
0. 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: hashlib
1 [chỉ ASCII, như ví dụ: được trả về bởi hashlib
2] hoặc đối tượng giống như A byte.
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.