یک تابع پایتون بنویسید که هدرهای HTTP شامل "timestamp" و "payload" را با الگوریتم HMAC-SHA256 و یک کلید محرمانه امضا کند و تابع دیگری بنویسید که صحت آن امضا را بررسی کند.
16.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:29 0.0
برای انجام این کار از کتابخانههای استاندارد Python مانند hmac و hashlib و اختیاری base64 استفاده کنید: مقدارهای هدر (مثل timestamp و payload) را به بایت تبدیل کنید، آنها را به صورت مشخصی (مثلاً با ':' جدا) به هم بچسبانید و hmac.new(secret, message, hashlib.sha256).digest() را محاسبه کنید و خروجی را به صورت hex یا base64 در هدر Signature قرار دهید. برای بررسی امضا، همان پیام را دوباره بسازید و با hmac.compare_digest خروجی محاسبهشده را با امضای دریافتی مقایسه کنید تا حملات زمانبندی را کاهش دهید. همچنین توصیه میشود کلید را از محیط (environment) یا پارامتر تابع بگیرید و با بررسی timestamp از حملات replay جلوگیری کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
کلید محرمانه را از محیط اجرا بخوانید تا از افشای کلید در کد جلوگیری شود و در هر درخواست از آن به طور یکسان استفاده کنید. برای مقاومت در برابر حملات زمانبندی از hmac.compare_digest استفاده کنید و با بررسی timestamp در یک پنجره زمانی مشخص از حملات Replay جلوگیری کنید. پیام را به صورت bytes با یک جداکننده ثابت مانند ':' بین timestamp و payload بسازید و امضای HMAC-SHA256 را به صورت hex یا base64 در هدر Signature قرار دهید.
گزارش