این که روشن است. مگر اساساً فلسفه موجودیت هش به منظور اقدامی غیر از قیاس بوده است؟با استفاده از این الگوریتمها با دقت بالایی میشود شباهت دو رشته یا محتوای دو فایل را بررسی کرد
از ابتدا هش ها آمده اند برای قیاس پذیری آسان. به این صورت که 2 ورودی متفاوت خروجی همسان (از نظر طول رشته) اما یونیک داشته باشند. به این ترتیب امکان تفکیک و تشخیص برابری آنها بدون نیاز به بررسی خود ورودی ها امکان پذیر است.
این مفهوم چه برای فایل که شما گفتید چه برای رمز صدق می کند. اینجا هم کسی چیزی بیش از این از هش انتظار ندارد.
اتفاقا انکرایپت کردن رمز یک اقدام با ریسک بالا هست (نظر شخصی نیست طبق اصول CC البته بنده هم کاملا موافقش هستم). چون در صورت شکست انکرایپشن لو رفتن همه رمز ها 100% امکان پذیر است.
اما بحث برات فورس کردن برای هر هش زمانی یکسان می برد و اینطور نیست اگر یک رمز هش شده با برات فورس کشف شد، دیگر باقی رمزها به سرعت و به راحتی شکسته شوند! بلکه تک تک آنها همان قدر زمان خواهند برد.
بنابراین اصلا این تصور که به صورت انکرایپت دخیره بشود رمز یک اشتباه محض است که البته از نظر اصول عمومی امنیت (CC) نیز مردود می باشد. رمز ها باید هش باشند.
پس بهتره قفط سر این که چه الگو هشی استفاده شود بحث کرد.
-----
موضوع بعد این اکثریت از چه چیزی استفاده می کنند و مثلا لاراول (به نظر من یک فاجعه در php) از این سیستم استفاده می کند پس بهترین است اصلا استدلال علمی و منطقی نمی باشد.
به نظر من جالب نیست در جمع کسانی که کارشان 0 و 1 است یک طرفشان کامپیوتر و به نوعی مطلقا منطق حاکمیت دارد بخواهیم با استدلال های این چنینی به یک راهکار برتری بدهیم و مهر تائید بهش بزنیم.
بنده همچنان تاکید میکنم اگر کدها در فضای ایزوله هستند و بحث دسترسی کرک به کد وجود ندارد، قطعا الگوریتم های اختصاصی امن ترین ها هستند تا این عمومی ها یا پیشنهادات خود php حتی.
در جمع بندی نظرات خودم، ترکیب چند نوبتی و salt شناور به نسبت هر رمز را همچنان کاربردی ترین شیوه می دانم.
اینطور نیست دوست عزیز. اگر شما ده بار هم md5 را داخل هم کار بزارید. و خروجی شما صرفا md5 باشد سودی برای شما ندارد. وقتی برات فورس روی هش شما صورت میگیرد ریسک لو خوردن آن بالاست چون خروجی شما یک md5 است در هر حال !ex : [ md5(md5('Azade')); ] encoded
به هیچ عنوان امکان نداره به داده اولیه دسترسی داشته باشن چون در کل md5 سیستم انکریپت یا انکود نیست فقط یک سیستم کدگذاری غیرقابل بازگشت هست که با توجه به طول کاراکتر نوع داده و متن داده یک کد یکسان تولید میکنه .
اما اگر salt استفاهد کنید، ساختار md5 را دستخوش تغییراتی می کنید که مراحل برات فورس آن زمان گیر تر خواهد شد (مگر salt شما را داشته باشند که در این حالت تازه زمان مورد نیاز مثل حالت فوق خواهد بود).
یک اشتباه که برخی میکنند فکر میکنند برات فورس روی هش ها از 0000000000000000 شروع میشود و مثلا تzzzzzzzzzzzzzzz قراره برود جلو ... در صورتی که اینطور نیست.
ما برات فورس ویژه sha-1 داریم، برات فورس ویژه md5 داریم و به همین ترتیب برات فورس های اختصاصی داریم که خیلی زمان کوتاه تری به نسبت یک برات فورس عمومی احتیاج دارند که کاراکتر به کاراکتر بخواهد عمل کند.
مثلا یکی از خلاقیت های خود بنده اینورت کردن نصف رشته هش می باشد. البته بیشتر در پروژه های ruby چون این کار اونجا بسیار ساده هست و با یک خط کد امکان پذیر است. عملا هش های بنده اصلا قابل شناسیی نبودند که کسی بخواهد برات فورس اختصاصی اونها را به کار بست.