یک برنامه پایتون بنویسید که یک رشته ورودی را گرفته، یک 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 مطمئن شوید.

توسط پژوهشگر در 201 روز قبل ساعت 03:08
دسته بندی ها: Python Python for beginner
sara در 201 روز قبل ساعت 07:24

مهم‌ترین نکته این است که salt باید تصادفی و برای هر ورودی جداگانه تولید شود تا حملات rainbow table بی‌اثر شوند. هنگام hashing با hashlib.sha256، رشته و salt را به بایت تبدیل کنید (encode('utf-8')) و ترتیب ترکیب را ثابت نگه دارید تا بازتولید هش دقیق باشد. برای امنیت بهتر، sha256 تنها برای پسوردها کافی نیست؛ از یک KDF کندتر مانند bcrypt/scrypt/argon2 یا حداقل چند دور hashing با iterations استفاده کنید و salt را به صورت رشته hex یا bytes ذخیره کنید. برای مقایسه ایمن، هش جدید را با هش ذخیره‌شده با استفاده از یک مقایسه زمان-ساز مانند hmac.compare_digest مقایسه کنید و هر دو مقدار salt و هش را به‌خوبی نگهداری کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری