Python yêu cầu hmac

Nó hoạt động bằng cách cung cấp trình xác thực tùy chỉnh cho thư viện Yêu cầu sửa đổi các lệnh gọi API gửi đi để mã hóa các yêu cầu xác thực HMAC

Bắt đầu

Để cài đặt

pip install python-hmac-auth

Trong mã của bạn, hãy nhập lớp HmacAuth và chỉ định nó trên tham số auth khi thực hiện lệnh gọi API

import requests
from python_hmac_auth import HmacAuth

response = requests.get['//example.com/api', auth=HmacAuth['your_api_key', 'your_secret_key']]

Nếu cần, bạn có thể điều chỉnh tên của tham số truy vấn và tiêu đề được HMAC sử dụng bằng cách chuyển các giá trị cho

  • api_key_query_param
  • chữ ký_http_header
  • dấu thời gian_http_header
  • version_http_header vào hàm tạo dưới dạng tham số được đặt tên

Xem Hướng dẫn sử dụng để tìm tên mặc định cho các tiêu đề này

Các thay đổi trong ứng dụng khách cũng phải được thực hiện tại máy chủ, nếu không xác thực sẽ không hoạt động

Hướng dẫn sử dụng

Xem Hướng dẫn sử dụng cho jersey-hmac-auth để biết thêm chi tiết về xác thực HMAC trên máy chủ và cho các thư viện máy khách

Trả về một đối tượng hmac mới. khóa là một đối tượng byte hoặc bytearray cung cấp khóa bí mật. Nếu có thông báo, cuộc gọi phương thức update[msg] được thực hiện. digestmod là tên thông báo, hàm tạo thông báo hoặc mô-đun cho đối tượng HMAC sử dụng. Nó có thể là bất kỳ tên nào phù hợp với. 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. Khóa tham số có thể là đối tượng byte hoặc bytearray. Thông điệp tham số có thể thuộc bất kỳ loại nào được hỗ trợ bởi. Thông số digestmod có thể là tên của một thuật toán băm.

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 thông báo mặc định ngầm định cho digestmod không được dùng nữa. Thông số digestmod hiện được yêu cầu. Chuyển nó dưới dạng đối số từ khóa để tránh khó xử khi bạn không có thông báo ban đầu.

hmac. thông báo[key , tin nhắn , tiêu hóa]

Trả lại thông báo tóm tắt cho khóa bí mật đã cho và thông báo. Hàm này 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 đối với các thông báo phù hợp với bộ nhớ. Các tham số key, msg, và digest có cùng ý nghĩa như trong

Chi tiết triển khai CPython, triển khai C được tối ưu hóa chỉ được sử dụng khi thông báo là một chuỗi và tên của thuật toán thông báo, đượ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 thức sau

HMAC. cập nhật[tin nhắn]

Cập nhật đối tượng hmac bằng msg. Các cuộc gọi lặp lại tương đương với một cuộc gọi duy nhất với sự nối của tất cả các đối số. m.update[a]; m.update[b] tương đương với m.update[a + b]

Đã thay đổi trong phiên bản 3. 4. Thông điệp tham số có thể thuộc bất kỳ loại nào được hỗ trợ bởi.

HMAC. tiêu hóa[]

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

Cảnh báo

Khi so sánh đầu ra của với thông báo được cung cấp bên ngoài trong quy trình xác minh, bạn nên sử dụng hàm thay vì toán tử update[msg]2 để giảm nguy cơ bị tấn công theo thời gian

HMAC. hexdigest[]

Giống như ngoại trừ thông báo được trả về dưới dạng một chuỗi dài gấp đô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 phi nhị phân khác

Cảnh báo

Khi so sánh đầu ra của với thông báo được cung cấp bên ngoài trong quy trình xác minh, bạn nên sử dụng hàm thay vì toán tử update[msg]2 để giảm nguy cơ bị tấn công theo thời gian

HMAC. bản sao[]

Trả về một bản sao [“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 bản tóm tắt của các chuỗi chia sẻ một chuỗi con ban đầu chung

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

HMAC. tiêu hóa_size

Kích thước của bản tóm tắt HMAC kết quả tính bằng byte

HMAC. kích thước khối

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

Mới trong phiên bản 3. 4

HMAC. Tên

Tên chuẩn của HMAC này, luôn viết thường, e. g. update[msg]7

Mới trong phiên bản 3. 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ờ update[msg]8, update[msg]9 và hashlib.new[]0 là 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

hmac. so sánh_digest[a , b]

Trả lại hashlib.new[]1. Chức năng này sử dụng một phương pháp được thiết kế để ngăn chặn phân tích thời gian bằng cách tránh hành vi đoản mạch dựa trên nội dung, làm cho nó phù hợp với mật mã. a và b phải cùng loại. hoặc [chỉ ASCII, như e. g. được trả về bởi ], hoặc một

Ghi chú

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

Chủ Đề