اول اینکه امن ترین روش رمزنگاری پسورد ها چیه؟ sha1 یا sha2 یا...؟!
وقتی پسورد در سایت کد میشه و به دیتابیس ارسال میشه، دیتابیس چگونه اون رو دیکد میکنه؟ مثلا اگه پسورد 12345 رو به md5 یا sha1 تبدیل کنه، با چه روشی دیکد میشه؟
حالا اگه دیتابیس میتونه انواع روش های رمزنگاری رو دیکد کنه، پس دیگه چه فرقی میکنه که md5 باشه یا sha1 یا هر چیز دیگه ای؟
omid1991
August 31st, 2018, 15:11
امروز چند سوال ذهن من رو درگیر کرده
اول اینکه امن ترین روش رمزنگاری پسورد ها چیه؟ sha1 یا sha2 یا...؟!
وقتی پسورد در سایت کد میشه و به دیتابیس ارسال میشه، دیتابیس چگونه اون رو دیکد میکنه؟ مثلا اگه پسورد 12345 رو به md5 یا sha1 تبدیل کنه، با چه روشی دیکد میشه؟
حالا اگه دیتابیس میتونه انواع روش های رمزنگاری رو دیکد کنه، پس دیگه چه فرقی میکنه که md5 باشه یا sha1 یا هر چیز دیگه ای؟
سلام وقت بخیر
اول اینکه امن ترین روش رمزنگاری پسورد ها چیه؟ sha1 یا sha2 یا...؟!
بستگی داره به چه شکل رمزنگاری کنید
مثلا اسکریپت اوپن کارت برای رمزنگاری امده چند بار md5 رو داخل خودش اینکد کرده به این شکل
md5(md5(password . salt))
وقتی پسورد در سایت کد میشه و به دیتابیس ارسال میشه، دیتابیس چگونه اون رو دیکد میکنه؟ مثلا اگه پسورد 12345 رو به md5 یا sha1 تبدیل کنه، با چه روشی دیکد میشه؟
اصلا نیازی نیست دیکد بشه وقتی کاربر رمزشو وارد میکنه رمز کد میشه با پسورد کد شده تو دیتابیس مقایسه میشه همین
دیکد کردن خودش کلی زمان میبره با سرور معمولی هم نمیشه هر کد رو دیکد کرد :65:
سیدرضا بازیار
August 31st, 2018, 15:13
سلام وقت بخیر
بستگی داره به چه شکل رمزنگاری کنید
مثلا اسکریپت اوپن کارت برای رمزنگاری امده چند بار md5 رو داخل خودش رمز کرده به این شکل
md5(md5(pasword . salt))
اصلا نیازی نیست دیکد بشه وقتی کاربر رمزشو وارد میکنه رمز کد میشه با پسورد کد شده تو دیتابیس مقایسه میشه همین
دیکد کردن خودش کلی زمان میبره با سرور معمولی هم نمیشه هر کد رو دیکد کرد :65:
ممنون بابت راهنمایی شما. سوال آخر رو یه جورایی برام عجیب بود. چون یه هکر رو یه بار پیدا کردم که مثلا md5 هایی که قابل دیکد نبود رو دیکد میکرد و حتی ادعا داشت که مثلا sha1 رو میتونه دیکد کنه...
در کل چند روش واسه رمز نگاری وجود داره؟ حایی هست که روش ها رو توضیح داده باشه؟ تو ویکیپدیا هر چی میگردم چیزی نمیبینم
omid1991
August 31st, 2018, 15:37
ممنون بابت راهنمایی شما. سوال آخر رو یه جورایی برام عجیب بود. چون یه هکر رو یه بار پیدا کردم که مثلا md5 هایی که قابل دیکد نبود رو دیکد میکرد و حتی ادعا داشت که مثلا sha1 رو میتونه دیکد کنه...
در کل چند روش واسه رمز نگاری وجود داره؟ حایی هست که روش ها رو توضیح داده باشه؟ تو ویکیپدیا هر چی میگردم چیزی نمیبینم
به هکر ربطی نداره دیکدر کردن کلا کار پیچیده ای هست و ممکنه سالها طول بکشه یه پسورد دیکد بشه
مثلا این پسورد (g@2t&5sRk*2g4) رو اینکد کنید با هر روشی خیلی سخت دیکد میشه
این سایت توضیحات داده با چه روشی هایی میشه پسورد رو اینکد کرد
https://joshtronic.com/2013/06/06/encrypting-passwords-in-php/
hoka
August 31st, 2018, 16:52
بهترینش اینه که همرو با هم ترکیب کنید یعنی با md5 کد کنید بعد همونو sha1 کنید بعد خواستید یه الگوریتم دستی بزنید براش و ...
RayanPartoCo
September 9th, 2018, 01:19
بهترین روش هش کردن پسورد استفاده از استرینگ ساختگی و sha1 است. البته استفاده 2 بار از توابع مخصوص هش کردن هم خوبه مانند md5 یا همین sha1
مثلا
sha1(username.salt.password)
همونطور که دوستان هم اشاره کردند دیتابیس رمز را دیکد نمیکنه بلکه شما رمز را کد میکنید و با استرینگ کد شده مقایسه میکنید.
JeyServer
September 10th, 2018, 21:16
سالیان ساله که دارند داد میزنند که md5 و sha1 برای هش رمز ها استفاده نکنید!
روشی برای نگهداری رمز ها امنه که اگر n بار یک داده رو با الگوریتم موردنظر مورد پردازش قرار بدید هر بار مقدار متفاوتی خروجی بده. (در خصوص الگوریتم نامتقارن تحقیق بفرمایید.)
البته لازمه که بدونید شما نیاز ندارید تا رمز کاربر رو encrypt کنید و در دیتابیس ذخیره کنید، صرفا لازم دارید تا نشانه ای از رمز رو نگهداری کنید و هربار با ورود مجدد رمز اون رو با نشانه ای که قبل از ذخیره کردید مقایسه کنید و این مورد ربطی به رمزنگاری نداره!
سالیان ساله که دارند داد میزنند که md5 و sha1 برای هش رمز ها استفاده نکنید!
روشی برای نگهداری رمز ها امنه که اگر n بار یک داده رو با الگوریتم موردنظر مورد پردازش قرار بدید هر بار مقدار متفاوتی خروجی بده. (در خصوص الگوریتم نامتقارن تحقیق بفرمایید.)
البته لازمه که بدونید شما نیاز ندارید تا رمز کاربر رو encrypt کنید و در دیتابیس ذخیره کنید، صرفا لازم دارید تا نشانه ای از رمز رو نگهداری کنید و هربار با ورود مجدد رمز اون رو با نشانه ای که قبل از ذخیره کردید مقایسه کنید و این مورد ربطی به رمزنگاری نداره!
راهکار جایگزین:
http://ir2.php.net/password_hash
http://ir2.php.net/password_verify
اما الان بهترین فریم ورک های php هم دارند از همین روش برای هش کردن پسوردها استفاده میکنند.
اما راه های جایگزین که شما فرمودید هم بسیار عالی است
be099
September 11th, 2018, 01:09
اما الان بهترین فریم ورک های php هم دارند از همین روش برای هش کردن پسوردها استفاده میکنند.
اما راه های جایگزین که شما فرمودید هم بسیار عالی است
خود پسورد هیچوقت مستقیم هش نمیشه
مثلا
<?php
echo md5(sha1(strrev(sha1(base64_encode(sha1(strrev(str _rot13(md5("123456")))))))));
?>
میشه 0a5b34558530033e62378f451d262808
که اگه شما تا هزار سال دیگم بشینی نمیتونی کرکش کنی
RayanPartoCo
September 11th, 2018, 01:12
خود پسورد هیچوقت مستقیم هش نمیشه
بله من در پست قبلیم هم توضیح دادم که رمز با یک استرینگ و الگوریتمی ترکیب و سپس هش میشه
hoka
September 11th, 2018, 03:23
خود پسورد هیچوقت مستقیم هش نمیشه
مثلا
<?php
echo md5(sha1(strrev(sha1(base64_encode(sha1(strrev(str _rot13(md5("123456")))))))));
?>
میشه 0a5b34558530033e62378f451d262808
که اگه شما تا هزار سال دیگم بشینی نمیتونی کرکش کنی
حالا نمیخواست اینقدر بلا به سرش بیاری :d
SamaN DL
September 11th, 2018, 11:03
خود پسورد هیچوقت مستقیم هش نمیشه
مثلا
<?php
echo md5(sha1(strrev(sha1(base64_encode(sha1(strrev(str _rot13(md5("123456")))))))));
?>
میشه 0a5b34558530033e62378f451d262808
که اگه شما تا هزار سال دیگم بشینی نمیتونی کرکش کنی
بسیار جالب بود تشکر بابت ایجاد تاپیک
جسارتا اگر برای دیکد کردن انقدر زمان لازمه چطور از دیتابیس به سادگی قابل خواندن هست!؟
یعنی عملا دیتا بیس دی کد میکنه یا cms?
be099
September 11th, 2018, 12:15
بسیار جالب بود تشکر بابت ایجاد تاپیک
جسارتا اگر برای دیکد کردن انقدر زمان لازمه چطور از دیتابیس به سادگی قابل خواندن هست!؟
یعنی عملا دیتا بیس دی کد میکنه یا cms?
خیلی راحت
شما موقع ثبت نام وقتی یوزر اطلاعاتشو وارد کرد 0a5b34558530033e62378f451d262808 توی دیتابیس با یوزر نیم مثلا mohammad ذخیره میکنی
بعد که کاربر خواست وارد بشه توی سایت یا اپ
mohammad برای یوزر نیم
و
123456 برای پسورد وارد میکنه
بعد توی سرور موقع دریافت اطلاعات شما یوزرنیمو همون میذاری
بعد با همون روش بالا دوباره 123456 هش میکنی
دوباره به همون مقداری میرسی که قبلا ذخیره کرده بودی
بعد یه درخواست به دیتابیس میفرستی برای انتخاب یوزر نیم با پسورد هش شده
اگر اوکی بود کوکی یا sp توی مرورگر یا اپ ذخیره میکنی با یه توکن و یوزر آی دی و هرچی یا هرجور که میخوای یوزرو شناسایی کنی و بقیه ی ماجرا ...
البته تمام این جریانات حتما باید روی ssl باشه وگرنه بی ارزشه