PDA

View Full Version : بهترین روش هش کردن رمز عبور



mmnoody2006
سه شنبه 27 بهمن 1388, 21:32 عصر
سلام دوستان به نظر شما بهترین روش بعد از md5 کدوم روشه

mmnoody2006
سه شنبه 27 بهمن 1388, 21:36 عصر
البته md5 خودش بهترین روش نیست

Peyman.Gh
سه شنبه 27 بهمن 1388, 21:51 عصر
الگوریتم SHA1 !

mmnoody2006
سه شنبه 27 بهمن 1388, 22:39 عصر
دوست عزیز من شنیدم md5 رو می شه دی کد کرد حالا این sha1 که بعد از md5 برکاربدترینه چی ؟؟؟؟

Peyman.Gh
سه شنبه 27 بهمن 1388, 22:45 عصر
بله هم MD5 و هم SHA1 را میتوان دیکد کرد !

mmnoody2006
چهارشنبه 28 بهمن 1388, 17:27 عصر
خب پس چطور باید رمز گذاری کنم

Peyman.Gh
چهارشنبه 28 بهمن 1388, 17:58 عصر
یعنی چی چطور رمز نگاری کنیم ؟!
در همه جا از همین الگوریتم ها برای رمز ها استفاه میشود که در خیلی از موارد Decode کردن رمز ها بسیار سخت و طولانی میباشد بستگی به رمز دارد !

mmnoody2006
چهارشنبه 28 بهمن 1388, 20:24 عصر
ببین دوست عزیز من می خوام پسورد ها رو هش کنم آخه اگه دی کد بشه که دیگه بدرد نمی خوره
البته خودمم می دونم که خیلی سخته یا حتی بعضی مواقع نمی شه ولی اگه بشه چی می شه
من یه راه به نظرم اومد بیام این کد تولید شده رو دست کاری کنم
مثلا به اولش چند کاراکتر تصادفی اضافه کنم
مثلا 7 کاراکتر و در موقع نیاز این 7 کاراکتر رو حذف کنم
چطوره
لطفا دوستان کمک کنن

s.mahmood
چهارشنبه 28 بهمن 1388, 23:11 عصر
دوستای گل string ی که به روش md5 یا sha1 هش میشه رو نمیشه به حالت اول برگردوند
برای اینکه بتونی از اون به نحو احسن برای پسوردها استفاده کنی اینه که
پسوردها با الگوریتم md5 هش بشن
بعد در بانک اطلاعاتی ریخته بشن
خوب حالا وقتی که کاربر میخواد وارد سایت بشه پسوردش رو وارد میکنه .
پسورد هش میشه و با هش داخل بانک اطلاعاتی مربوط به همون کاربر مقایسه میشه
اگر درست بود پس پسورد درست بوده
دلیلی نیست که استرینگ هش شده به حالت اول برگردونده بشه
البته بعضی از سایت ها این کار رو میکنن که اونها هم خودشون گفتن که هیچ الگوریتمی برای برگردوندن هش به حالت اول ندارند بلکه بانک اطلاعاتی بزرگی از عبارات هش شده و معادلشون رو دارند که تو اونها جستجو میکنند و جواب رو برای شما پیدا میکنند.
اما روشهایی هست که عباراتی رو به حالت هش در بیارید و با کلیدهایی که در ابتدا تعریف کردید اونها رو به حالت اول در بیارید
مثلا این کدها:
برای هش کردن با کلید love


byte[] IV = new byte[8] { 240, 32, 45, 29, 0, 76, 173, 59 };
string cryptoKey = "LOVE";
string MyString = TextBox1.Text;
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(MyString);
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
des.Key = MD5.ComputeHash(System.Text.ASCIIEncoding.UTF8.Get Bytes(cryptoKey));
des.IV = IV;
byte[] CodedBuffer = des.CreateEncryptor().TransformFinalBlock(buffer,0 ,buffer.Length);
Label1.Text = System.Convert.ToBase64String(CodedBuffer,0,CodedB uffer.Length);
و خارج کردن از هش با همان کلید:

byte[] IV = new byte[8] { 240, 32, 45, 29, 0, 76, 173, 59 };
string cryptoKey = "LOVE";
string CodedString64 = Label1.Text;
byte[] buffer = Convert.FromBase64String(CodedString64);
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
des.Key = MD5.ComputeHash(System.Text.ASCIIEncoding.UTF8.Get Bytes(cryptoKey));
des.IV = IV;
byte[] CodedBuffer = des.CreateDecryptor().TransformFinalBlock(buffer, 0, buffer.Length);
Label2.Text = System.Text.Encoding.UTF8.GetString(CodedBuffer);
برای اطلاعات بیشتر خودم چندتا صفحه رو قبلا ذخیره کرده بودم که اونها رو برای شما هم میزارم به همراه نمونه پروژه ای که از کد بالا استفاده میکنه
در ضمن این رو هم بگم نتیجه ای رو که کد زیر تولید میکنه استرینگ هش شده به صورت هگزا دسیمال هست.


FormsAuthentication.HashPasswordForStoringInConfig File("your string password", "md5");

کدی رو که در زیر میزارم از msdn برداشتم و برای تبدیل یک عبارت به md5 هست و مقایسه این که آیا عبارت هش شده با هش عبارت جدید یکی هست یا نه.همون متد استفاده از هش برای پسورد ها

C#
using System;
using System.Security.Cryptography;
using System.Text;

class Example
{
// Hash an input string and return the hash as
// a 32 character hexadecimal string.
static string getMd5Hash(string input)
{
// Create a new instance of the MD5CryptoServiceProvider object.
MD5 md5Hasher = MD5.Create();

// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(in put));

// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();

// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}

// Return the hexadecimal string.
return sBuilder.ToString();
}

// Verify a hash against a string.
static bool verifyMd5Hash(string input, string hash)
{
// Hash the input.
string hashOfInput = getMd5Hash(input);

// Create a StringComparer an compare the hashes.
StringComparer comparer = StringComparer.OrdinalIgnoreCase;

if (0 == comparer.Compare(hashOfInput, hash))
{
return true;
}
else
{
return false;
}
}


static void Main()
{
string source = "Hello World!";

string hash = getMd5Hash(source);

Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".");

Console.WriteLine("Verifying the hash...");

if (verifyMd5Hash(source, hash))
{
Console.WriteLine("The hashes are the same.");
}
else
{
Console.WriteLine("The hashes are not same.");
}

}
}
// This code example produces the following output:
//
// The MD5 hash of Hello World! is: ed076287532e86365e841e92bfc50d8c.
// Verifying the hash...
// The hashes are the same.

Peyman.Gh
چهارشنبه 28 بهمن 1388, 23:34 عصر
MD5 و SHA1 تابع های یک طرفه هستند اما میتوان آن ها را Decode کرد !

mmnoody2006
پنج شنبه 29 بهمن 1388, 18:55 عصر
بله فکر کنم روشی که خودم گفتم بهترین باشه چون فقط خودم می دونم کجای پسورد رو من با کلمات تصادفی بی ربط پر کردم و بعد اونا رو حذف می کنم و با رشته وارده کاربر مقایسه می کنم

abi_sarab
شنبه 01 اسفند 1388, 09:29 صبح
آقایان آقایان آقایان کی گفته که SHA1 را می شه هک کرد؟
کی گفته؟
آقا هک کردن این ها که به این راحتی ها نیست.

Peyman.Gh
شنبه 01 اسفند 1388, 17:56 عصر
اینجارو بخوانید : http://barnamenevis.org/forum/showpost.php?p=912381&postcount=7
ما هم گفتیم بستگی به رمز داره !

iman_ad
شنبه 01 اسفند 1388, 21:02 عصر
الگوریتم های یک طرفه یا salt قابل decrypte نیستند ولی اونایی که معروف هستند با یک دیتابیس از کدهای رمز گزاری شده می توان هک کرد هر چقدر رمز پیچیذه تر باشه احتمالش کمتر
می تونید خودتون یک الگریتم salt بنویسید

meysampaknahad
یک شنبه 02 اسفند 1388, 18:22 عصر
سلام
رمز عبور هایی که با md5 یا SHA1 رمزگذاری شده رو در حالت عادی نمیشه دیکد کرد. ولی در کل به کلمه عبور انتخاب شده بستگی داره که اگر ساده باشه به راحتی میشه دیکدش کرد.

mmnoody2006
پنج شنبه 13 اسفند 1388, 20:38 عصر
خب پس با مجبور کردن کاربر به استفاده از رمز عبور پیچیده تا حد زیادی می شه امنیت رو برقرار کرد
آیا روش های دیگه ای هم وجو داره؟؟؟؟؟

Peyman.Gh
پنج شنبه 13 اسفند 1388, 20:49 عصر
یکی از دوستان ایده خوبی دادن اون هم نوشتن یک تابع درهم ساز است.
البته امنیت تنها مختص رمز عبور نیست باید توجه داشته باشید به نقش کاربران و سایر مسائل مانند Sessionو...

mmnoody2006
جمعه 14 اسفند 1388, 00:42 صبح
اون ایده خودم بود که فکر خوبی هم هست ولی به قول شما باید امنیت رو برقرار کرد :متفکر:
من هک بلدم و می دونم که یکی از حفره ها اینه که برنامه خطا بده اونوقته که هکر ها دست به کار می شن
برای این که کاربران متن خطا رو نبینند چه کنم :اشتباه:

mmnoody2006
جمعه 14 اسفند 1388, 13:54 عصر
کسی کمک نمی کنه ؟؟؟؟؟؟

Peyman.Gh
جمعه 14 اسفند 1388, 14:09 عصر
اونجوری هم که فکر میکنی نیست .
منظورت SQL injection هست ؟! rfi و lfi هم که ماله شما نیست.

h.alizadeh
جمعه 14 اسفند 1388, 14:28 عصر
برای این که کاربران متن خطا رو نبینند چه کنم

در فایل وب کانفیگ
<customErrors mode ="RemoteOnly"></customErrors>

باعث میشه خطا فقط روی سرورتون دیده شه.

mmnoody2006
شنبه 15 اسفند 1388, 12:10 عصر
خب اگه بخوام اونارو در یک صفحه خاص با یک پیغام خاص نشون بدم چی ؟
در ضمن اگر از روش های بزرگتر از md5 استفاده کنم چه مقدار زمان بیشتری برای تولید می بره ؟؟؟

Peyman.Gh
شنبه 15 اسفند 1388, 12:37 عصر
برای سوالتون در وب Web.Config :

<customErrors mode="RemoteOnly" defaultRedirect="Error.htm">
<error statusCode="404" redirect="NotFound.htm"/>
</customErrors>

ببین نمیدونم تا حالا خواستید یک هش را دیکد کنید یا نه اما بدونید گاهی اوقات 1 دقیقه هم طول نمیکشه گاهی اوقات میبینی 100 سال طول میکشه :لبخند:
پس زیاد نگران این مساًله نباش یا به قول خودتون یه الگوریتم طراحی کنید.

Mohammadrezag
شنبه 21 فروردین 1389, 15:09 عصر
بله هم MD5 و هم SHA1 را میتوان دیکد کرد !

كي گفته ؟
نكنه اينا رو ديدين ... http://www.md5decrypter.com
اينا فقط يه سري كلمات وارد شده هستند ...
md5 به هيچ عنوان امكان ديكد شدن نداره !

Peyman.Gh
شنبه 21 فروردین 1389, 15:15 عصر
كي گفته ؟
نكنه اينا رو ديدين ... http://www.md5decrypter.com
اينا فقط يه سري كلمات وارد شده هستند ...
md5 به هيچ عنوان امكان ديكد شدن نداره !

عزیزم MD5 دیگه منسوخ شده !
و من هم به شما میگم که MD5 در حال حاضر قابل دیکد شدن میباشد ! ولی بستگی به هش شما دارد چون برای دیکد کردن از یک بانک اطلاعاتی استفاده میشود اگر رشته مورد نظر کوتاه باشد خیلی سریع دیکد میشود اگر نه ممکن است سالها طول بکشد.

maxpayn2
شنبه 21 فروردین 1389, 17:05 عصر
به نظر مشکل در کلمه دیکد هستش که به نظر من بازگشتن از کد به سورس معنی میده ، اگه منظورتون از دیکد اینه که باید بگم MD5 و SHA1 الگوریتم های برگشت ناپذیر هستند و دیکد نمیشن ، ولی میشه برنامه ای نوشت که تمام حالات ممکن از ترکیب تمام کاراکتر های موجود در کیبورد 1 تا n رقمی (حرفی) رو بسازه و hash اون ها رو تولید و در دیتا بیس ذخیره کنه ، حرف وقت hash رو به دست آورد اون رو با hash ذخیره شده از قبل مقایسه کنه و چون میدونه این hash مربوط به چه ترکیبی از حروف هست پسورد به دست میاد ، پس برای روشی هم که دوستمون پیشنهاد دادند برای اضافه کردن چند حرف به پسورد بالاخره یک ترکیب جدید از حروف درست شده و hash شده که این ترکیب هم در حالات ساخته شده توسط اون نرم افزار وجود داره ، البته این ساختن و مقایسه hash ها کار زمان بریه ، من خودم با یک CPU پنتیوم چهار ، 3 گیگا هرتز برای ساخت و مقایسه تمام حالات ممکن از ترکیب تمام کاراکتر های موجود به طول 6 حرف کامپیوترم 7 روز به صورت 24 ساعته روشن بود و مقایسه میکرد

راه حل : به دنبال بهترین روش هش کردن نباشید ، جوری برنامه نویسی کنید و جوری امنیت رو برقرار کنید که hash شما لو نره ، اگر هم لو رفت تعداد کاراکترهای پسورد زیاد و ترکیبی باشه تا هکر پس از صرف زمان زیاد بی خیال بشه

aminghaderi
شنبه 21 فروردین 1389, 18:38 عصر
من خودم با یک CPU پنتیوم چهار ، 3 گیگا هرتز برای ساخت و مقایسه تمام حالات ممکن از ترکیب تمام کاراکتر های موجود به طول 6 حرف کامپیوترم 7 روز به صورت 24 ساعته روشن بود و مقایسه میکرد
واقعا کارتون قابل تحسینه!:تشویق:

Mohammadrezag
شنبه 21 فروردین 1389, 19:10 عصر
خوب حالا بحث منطقي تر شد ،
قبلش اگه توجه مي كرديد ، پست هاي زيادي زده شده مبني بر ديكد شدن md5
يعني فكر مي كنن براش راهي وجود داره ،
اما اينطور نيست و به قول maxpeyman برگشت نا پذيره
و البته اين كه ميگيد منسوخ شده قبول ندارم !
منظور شما اينه كه مثلا md5 رمز عبور 000000 ديگه معلومه ، ولي شما مي تونيد ترفندي به كار بگيريد كه معلوم نشه ،
اين ترفنديه كه به ذهن خودم رسيده ، شما همزمان داخل md5 مي تونيد يه كلمه ديگه بنويسيد
حالا اين md5 جديد هم قابل ديكد شدن هست ؟
البته شايد بگيد با لو رفتن كد باز معلوم مي شه ،
يه راه ديگه هم هست اين كه ، مثل پسورد cpanel و ... از كاربر بخوايد كه هم از حرف استفاده كنه هم از عدد و هم از علامت يا براش اجباري كنيد استفاده از رمز رو ،
ديگه فكر نمي كنم هيچ ديتابيسي بتونه تا اين حد ذخيره كنه ...
موفق باشيد

Peyman.Gh
شنبه 21 فروردین 1389, 21:26 عصر
MD5 یک تابع درهم ساز میباشد و دیکد کردن آن (یا بهتره بگیم Decryption) به این معنا نیست که قابل برگشت میباشد بلکه از یک بانک اطلاعاتی استفاده میشود برای دیکد کردن که قبلاً برای بانک مشخص کرده اند.
و من ذکر کردم که اگر رمز شما از کاراکتر های زیاد استفاده شده باشد مدت ها یا حتی اصلاً قابل دیکد شدن نمیباشد.
در خصوص منسوخ شدن هم از یکی شنیدم حالا باید فکر کنم ببینم کی بود :لبخند:

maxpayn2
یک شنبه 22 فروردین 1389, 09:37 صبح
اين ترفنديه كه به ذهن خودم رسيده ، شما همزمان داخل md5 مي تونيد يه كلمه ديگه بنويسيد
حالا اين md5 جديد هم قابل ديكد شدن هست ؟

اگه منظورتون اینه که پسورد به صورت MD5 هش بشه بعد یه کلمه بهش اضافه بشه ، خب کسی که این هش به اضافه اون کلمه رو به دست میاره اون کلمه رو ازش حذف میکنه بعد شروع میکنه به مقایسه ، اگه منظورتون اینه که یه کلمه به پسورد اضافه کنیم و بعد هش کنیم خط سوم پست قبلی من رو بخونید


يه راه ديگه هم هست اين كه ، مثل پسورد cpanel و ... از كاربر بخوايد كه هم از حرف استفاده كنه هم از عدد و هم از علامت يا براش اجباري كنيد استفاده از رمز رو ،
ديگه فكر نمي كنم هيچ ديتابيسي بتونه تا اين حد ذخيره كنه ...


از هر چیزی مانند حرف ، عدد ، علامت و ... استفاده بشه فرقی نمیکنه ، چون نرم افزار هایی که گفتم تمام کاراکتر هایی که ممکنه توسط کیبورد تولید بشه رو تست میکنن ، من خودم در تستی که در پست قبلی گفتم یک پسورد 6 کاراکتری به دست آوردم که اینجوری بود *d?98~

چرا فکر میکنید هیچ دیتابیسی نمیتونه تمام هش ها رو ذخیره کنه ، مگه حجم هش ها که یک string هستند از حجم عکس های تمام مردم دنیا که برخی از سرویس های اطلاعاتی اون رو دارند بیشتره ؟ در ضمن هیچ احتیاجی به دیتابیس هم نیست ، اگه یک کامپیوتر با مثلا 8 تا CPU و 32 گیگ رم داشته باشید میتونید هر دفعه که لازم شد هش ها رو بسازید و مقایسه کنید بدون اینکه جایی ذخیره بشه

maxpayn2
سه شنبه 24 فروردین 1389, 09:32 صبح
این مطلب رو بخونید ، جالبه :

http://en.wikipedia.org/wiki/Rainbow_table

mmnoody2006
چهارشنبه 06 مرداد 1389, 20:31 عصر
حالا اگه بیایم و دوبار یک string رو md5 کنیم چه اتفاقی می افته
آیا باز هم می شه دی کد کرد

ricky22
چهارشنبه 06 مرداد 1389, 21:17 عصر
در هش کردن اصلا دیکد معنی نمیده چون یک الگوریتم 1 طرفه و نا متقارن هست.
اما اگر به طور مثال خواستید یک رمز رو دو بار هش کنید برای مقایسه باید رمز اصلی را هم 2 بار هش کنید.

پاورقی : اصلا از MD5 استفاده نکنید Sha1 بارها توصیه شده توسط دوستان.

mmnoody2006
جمعه 08 مرداد 1389, 10:17 صبح
خب دوست عزیز اینکه دوبار یک رمز رو هش کنیم می تونه به امنیت رمز عبور کمک کنه ؟

ricky22
جمعه 08 مرداد 1389, 10:36 صبح
خب دوست عزیز اینکه دوبار یک رمز رو هش کنیم می تونه به امنیت رمز عبور کمک کنه ؟
به نظر من خیر
الگوریتم قوی تر بهتر کمک می کنه.
این نکاتی هست که اقای بهروز راد در رابطه با امنیت رمز عبور توصیه کردن
1) مکانیزمی برای جلوگیری از ایجاد کلمات عبور ساده در سیستم داشته باشید. مثلاً 123456789 یک کلمه ی عبور ساده ست که موجب Account Hijacking میشه.
2) طول کلمه ی عبور بهتر است حداقل 8 و حداکثر 100 کاراکتر باشد. (تعیین حداقل برای طول کلمه ی عبور موجب میشه تا شانس حملات Brute force کاهش پیدا کنه)
3) مانع ورود کاراکتری خاص توسط کاربر به عنوان کلمه ی عبور نشید.
4) نام کاربری و کلمه ی عبور نباید یکی باشند.
5) اگر کلمه ی عبور رو خودتون تولید می کنید الگوریتمش ثابت نباشه. مثلا اینجور نباشه که کلمه ی عبور از نام کاربری + عدد 22 تشکیل شده باشه!
6) از کلمات عبور معروف برای مدیر سایت استفاده نکنید. مثلاً admin یا web master. چون موجب نوعی از حملات با عنوان Social Engineering میشه.
7) اکانت هایی که برای مدت مشخصی استفاده نشدند رو غیر فعال کنید.
8) کلمات عبور رو Hash کنید.
9) بسته به اهمیت سیستم میشه به کاربران هشدار داد که کلمه ی عبورشون رو در بازه های زمانی مختلف عوض کنند. البته در این حالت نیاز به یک Password History هست تا کاربر کلمات عبور قبلیش رو مجدداً انتخاب نکنه.
10) قبل و بعد از تغییر کلمه ی عبور کاربر رو مجبور کنید تا مجدداً در سیستم لوگین کنه.

Vahid_moghaddam
جمعه 08 مرداد 1389, 11:49 صبح
به نظر من خیر
الگوریتم قوی تر بهتر کمک می کنه.
این نکاتی هست که اقای بهروز راد در رابطه با امنیت رمز عبور توصیه کردن
1) مکانیزمی برای جلوگیری از ایجاد کلمات عبور ساده در سیستم داشته باشید. مثلاً 123456789 یک کلمه ی عبور ساده ست که موجب Account Hijacking میشه.
2) طول کلمه ی عبور بهتر است حداقل 8 و حداکثر 100 کاراکتر باشد. (تعیین حداقل برای طول کلمه ی عبور موجب میشه تا شانس حملات Brute force کاهش پیدا کنه)
3) مانع ورود کاراکتری خاص توسط کاربر به عنوان کلمه ی عبور نشید.
4) نام کاربری و کلمه ی عبور نباید یکی باشند.
5) اگر کلمه ی عبور رو خودتون تولید می کنید الگوریتمش ثابت نباشه. مثلا اینجور نباشه که کلمه ی عبور از نام کاربری + عدد 22 تشکیل شده باشه!
6) از کلمات عبور معروف برای مدیر سایت استفاده نکنید. مثلاً admin یا web master. چون موجب نوعی از حملات با عنوان Social Engineering میشه.
7) اکانت هایی که برای مدت مشخصی استفاده نشدند رو غیر فعال کنید.
8) کلمات عبور رو Hash کنید.
9) بسته به اهمیت سیستم میشه به کاربران هشدار داد که کلمه ی عبورشون رو در بازه های زمانی مختلف عوض کنند. البته در این حالت نیاز به یک Password History هست تا کاربر کلمات عبور قبلیش رو مجدداً انتخاب نکنه.
10) قبل و بعد از تغییر کلمه ی عبور کاربر رو مجبور کنید تا مجدداً در سیستم لوگین کنه.
در ایجاد کلمه عبور hash شده از salt استفاده کنید.

ricky22
جمعه 08 مرداد 1389, 12:11 عصر
در ایجاد کلمه عبور hash شده از salt استفاده کنید.
لینک برای اطلاعات بیشتر همراه با مثال به 2 زبان برای دوستان.
http://www.obviex.com/samples/hash.aspx

mmnoody2006
جمعه 08 مرداد 1389, 22:17 عصر
آیا روش salt انعطاف پذیره ؟
آیا قابل دیکد هست ؟
در آخر روش معتبر به حساب میاد؟

mmnoody2006
جمعه 08 مرداد 1389, 22:19 عصر
این روش همون مدل های قبلی رو داره پس چه فرقی می کنه البته کد رو هنوز بررسی نکردم

Vahid_moghaddam
جمعه 08 مرداد 1389, 23:36 عصر
این روش همون مدل های قبلی رو داره پس چه فرقی می کنه البته کد رو هنوز بررسی نکردم

الگوریتم های hash (الگوریتم های معتبر) قابل decode نیستند. فرض کنید شما از یک فایل 10 گیگا بایتی یه رشته hashe شده 128 بیتی بدست میارید. این رشته قابل تبدیل به اون فایله؟
الگوریتم های sha به اندازه کافی (اونقدر کافی که در مثلا اطلاعات نظامی استفاده می شن) قابل اعتمادند. استفاده از salt به این دلیل که یک رشته تصادفی هست امکان حملات brute force رو خیلی خیلی خیلی کاهش می دن. شما نگران چی هستید؟

web developer
جمعه 08 مرداد 1389, 23:49 عصر
الگوریتم های هش کلا یکطرفه هستند و decode پذیر نیستند و فقط توسط جستجو در دیتابیس های بزرگی که از قبل آماده شده قابل خواندن هستند.
بطور مثال اگر کلمه salam را هش کنید رشته de6838252f95d3b9e803b28df33b4baa بوجود می آید که یکتاست. حال شما با جستجو در دیتابیسی که بیشتر کلمات هش شده درون آن وجود دارد می توانید به کلمه هش شده برسید.

راه حل:

1- 2 بار یا بیشتر هش کنید.
2- یک رشته ثابت و بی معنی به کلمه مورد نظر اضافه کرده سپس هش کنید:
مثال: salam + 2GtS#f5^&fve&*#SFV)(1ed
وجود این رشته در دیتابیس های موجود بسیار بسیار بسیار کم است.

موفق باشید

PhoenixNet
شنبه 09 مرداد 1389, 01:16 صبح
الگوریتم های Hash یک طرفه هستند و هک کردن اونا به معنی Decode کردن نیست بلکه میشه کلماتی رو پیدا کرد که با Hash کردن اونا همون عبارت Hash به دست بیاد.

چند بار Hash کردن هم تاثیری در بالا بردن امنیت کلمه نداره.

این سایت هم جالبه
http://www.md5decrypter.com

web developer
شنبه 09 مرداد 1389, 13:33 عصر
چند بار Hash کردن هم تاثیری در بالا بردن امنیت کلمه نداره.

این سایت هم جالبه
http://www.md5decrypter.com


تاثیر داره!

این سایت هم از همون دیتابیس هاست که گفتم
ببین اینو که 2 بار هش شده پیدا میکنه؟ 3d644f7f78a5a8dc766a415ed50b63ff

mmnoody2006
یک شنبه 10 مرداد 1389, 23:26 عصر
استفاده از salt به این دلیل که یک رشته تصادفی هست امکان حملات brute force رو خیلی خیلی خیلی کاهش می دن. شما نگران چی هستید؟

کمی بیشتر توضیح بدید !




1- 2 بار یا بیشتر هش کنید.
2- یک رشته ثابت و بی معنی به کلمه مورد نظر اضافه کرده سپس هش کنید:
مثال: salam + 2GtS#f5^&fve&*#SFV)(1ed
وجود این رشته در دیتابیس های موجود بسیار بسیار بسیار کم است.

بنظرم بهترین کار همینه البته دو بار هش کردن وقت بیشتری نیاز داره


این سایت هم جالبه
http://www.md5decrypter.com (http://www.md5decrypter.com/)

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

Vahid_moghaddam
یک شنبه 10 مرداد 1389, 23:54 عصر
همونطور که بارها و بارها گفته شده، hash قابل برگشت نیست. وقتی شما یه کلمه عبور رو با یک رشته تصادفی تولید شده ترکیب می کنید و بعد اون رو hash می کنید، brute force خیلی مشکل تر می شه. مثلا فرض کنید کلمه عبور Admin1359# باشه. و رشته تصادفی (salt) یه رشته 8 حرفی که رندم ایجاد می شه. با ترکیب این دو تا پسورد hash شده بدست میاد. چون salt در هر بار تولید متفاوته، بنابراین اگه دو کاریر کلمه عبور مشابه انتخاب کنند، hash ایجاد شده یکسان نیست. و افزایش طول پسورد خود به خود تعداد کلماتی رو که باید جستجو بشند بالا می بره. از طرف دیگه با استفاده از مکانیزم هایی برای تشخیص حملات brute force می شه اونها رو به شدت کند کرد(مثلا استفاده از تصویر امنیتی).