یک برنامه پایتون بنویسید که یک رشته ورودی را گرفته، یک salt تصادفی تولید کند، هش SHA-256 از ترکیب salt و رشته را با استفاده از ماژول hashlib محاسبه و هش و salt را ذخیره کند و سپس تابعی برای تأیید صحت رشته ورودی با استفاده از هش و salt ذخیرهشده فراهم کند.
2.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:08 0.0
برای حل این مسئله از ماژول hashlib برای محاسبه SHA-256 استفاده کنید؛ ابتدا یک salt تصادفی کوتاه (مثلاً با secrets.token_hex یا os.urandom که به hex تبدیل میشود) تولید کنید، سپس با تبدیل رشته و salt به بایت (encode('utf-8')) آنها را ترکیب کرده و hashlib.sha256(...) را اجرا و نتیجه را با hexdigest() دریافت و ذخیره کنید. برای تأیید، مقدار هش جدید را با استفاده از همان salt بازتولید کنید و با هش ذخیرهشده مقایسه کنید؛ نکات مفید: همیشه از salt تصادفی برای جلوگیری از حملات rainbow table استفاده کنید و از encode کردن رشتهها به بایت قبل از ارسال به hashlib مطمئن شوید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
مهمترین نکته این است که salt باید تصادفی و برای هر ورودی جداگانه تولید شود تا حملات rainbow table بیاثر شوند. هنگام hashing با hashlib.sha256، رشته و salt را به بایت تبدیل کنید (encode('utf-8')) و ترتیب ترکیب را ثابت نگه دارید تا بازتولید هش دقیق باشد. برای امنیت بهتر، sha256 تنها برای پسوردها کافی نیست؛ از یک KDF کندتر مانند bcrypt/scrypt/argon2 یا حداقل چند دور hashing با iterations استفاده کنید و salt را به صورت رشته hex یا bytes ذخیره کنید. برای مقایسه ایمن، هش جدید را با هش ذخیرهشده با استفاده از یک مقایسه زمان-ساز مانند hmac.compare_digest مقایسه کنید و هر دو مقدار salt و هش را بهخوبی نگهداری کنید.
گزارش