🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ امیر ابوئی
هر رشته کاراکتر، یک هش منحصر به فرد؟؟
جامعه پی اچ پی ایجاد شده در ۱۴ فروردین ۱۴۰۰

سلام و درود

ببخشید یه سوال داشتم، توی ویدیوی‌های قبل گفته شد که هر رشته کاراکتر با یک الگوریتم، هش منحصر به فرد خودشو داره ولی تو این ویدیو استاد برای تولید هش پسورد، با هر بار رفرش یک رشته جدید ایجاد میشد، اونوقت اگه قراره هربار یک چیزی تولید کنه، چطور میتونه مثلا با اون هش داخل دیتابیس تطابق بده؟

و در کنار این سوال دیگه ای داشتم که استاد داخل پروژه پسورد ادمین هارو به صورت هش شده قرار دادن ولی برای لاگین، جایی پسورد دریافتی از کاربر رو هش نکردن، هرچقدرم تو ویدیو و فایل‌ها گشتم این هش پسورد ورودی کاربر رو پیدا نکردم، آیا واقعا این تبدیل انجام نشده و اگر نشده چرا؟

ممنون میشم توضیح بدید تا برام شفاف بشه!

سلام و احترام

با تابع password_hash شما میتونید یک رشته رو hash کنید:

echo password_hash('mysecretpassword', PASSWORD_DEFAULT);

نتیجه:

$2y$10$n4xlP3HHKlAdRZoGnP7SUe6TdmeR/RqeG5VuFTYTB4Q07KqEZRZF2

حالا شما password هش شده رو که توی دیتابیس ذخیره سازی کردید میتونید خیلی راحت با متد password_verify اون رو بررسی کنید ببینید که پسورد ورودی با مقدار هش شدش یکی هست یا ن

password_verify ( string $password , string $hash ) : bool

پارامتر اول همون پسوردیه که برای مثال کاربر توی فرم لاگین وارد کرده و پارامتر دوم همون پسور هش شده هستش که توی دیتابیس برای کاربر ذخیره شده

<?php
// Hash generated using password_hash
$hash = '$2y$10$n4xlP3HHKlAdRZoGnP7SUe6TdmeR/RqeG5VuFTYTB4Q07KqEZRZF2';
if (password_verify('mysecretpassword', $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
?>
امیر صالحی ۱۵ فروردین ۱۴۰۰، ۱۶:۴۸

اینا همش اوکیه ولی مثلا یه رشته ‘salam’ هربار یه هش رو نتیجه میده خب از کجا میتونه این هش هارو تطابق بده ؟ 

امیر ابوئی ۱۵ فروردین ۱۴۰۰، ۱۷:۱۸