تابع crypt ، تابع هش رشته با salt (نمک)
دوشنبه 26 تیر 1391 1:41 PM
تابع crypt : این تابع مانند دو تابع قبلی یعنی md5 , sha1 هش روی رشته را انجام می دهد با این تفاوت که برای اینکه امنیت بیشتر از salt (نمک) استفاده شده است.
دارای دو آرگومان است اولی، رشته ورودی و دومی، salt یا رشته ثابت که به رشته اضافه شده سپس هش انجام می شود.
Salt (نمک):
در دو تابع قبلی یعنی md5 , sha1 وقتی کسی به بانک اطلاعاتی که پسوردها با دو تابع قبل هش شده بودند دسترسی پیدا می کرد می توانست با ساختن یک دیکشنری از رشته ها و معادل هش شده آنها با توابع مورد نظر با مقایسه و صرف زمان به پسوردها برسد برای حل این مشکل اشاره شد که می توانیم یک رشته تصادفی به پسورد اضافه سپس هش را با توابع قبل انجام دهیم این باعث می شد که هکر نتواند با دیکشنری از قبل ساخته خود به کلمات عبور دسترسی پیدا کند و مجبور برای هر رکورد هش آن را دوباره محاسبه کند که خیلی سخت و زمان گیر و گاهی غیر ممکن است.
این رشته تصادفی اضافه شده به پسورد را Salt می گویند که باعث پیچیدگی کلمات عبور می شود و امنیت آنها را بالا می برد در این روش 4096 نوع هش از یک پسورد می توان ایجاد کرد و به همین دلیل پیدا کردن پسورد سخت می شود ولی باز هم امنیت کامل ایجاد نمی شود.
ساختار:
مثال :
<?php
?>// تعريف کلمه عبور
$password = "mypass";
// تعريف نمک
$salt = "secured";
// رمزگذاري کلمه عبور با تابع
// result: seBgtAkJR1wIw
$cipher = crypt($password, $salt);
echo $cipher;
خروجی :
ابتدا کلمه عبور و salt تعرف شده و با تابع رمزگذاری شده و مقدار هش شده چاپ می شود. برای امنیت بیشتر بهتر است که salt را به صورت تصادفی برای هر کلمه عبور در نظر بگیریم سپس مقدار تصادفی salt را برای بازیابی و مقایسه در بانک برای هر رکورد ذخیره کنیم.