صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 53

نام تاپیک: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

  1. #1

    Question بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    من میخوام یک رمز عبور را کد کذاری کنم و بعد اون رو زخیره کنم به صورتی که امنیت اون بالا باشه کدام یک از متد های زیر بهترین گزینه هست و اصلا تفاوت های اونها در چیه و چطور میشه ازشون استفاده کرد؟
    md5_file() - Calculates the md5 hash of a given file
    sha1_file() - Calculate the sha1 hash of a file
    crc32() - Calculates the crc32 polynomial of a string
    sha1() - Calculate the sha1 hash of a string
    hash() - Generate a hash value (message digest)

  2. #2

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    بهترین روش ترکیب چند الگوریتم با هم به اضافه یک salt هست.
    salt میتونه یک کلید اختصاصی یا رندوم باشه

  3. #3
    کاربر دائمی آواتار masiha68
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    نقطه ی صفر مرزی
    پست
    816

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    md5 و sha1 که لو رفتن
    بقیه هم زیاد اطلاع ندارم :)

    من از ترکیب کردن چندتا از اینا استفاده می کردم با یه نمک قوی و تقریبا پسوردهای قویی ارائه میداد
    الان هم که با sha256 کار می کنم

  4. #4

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    آقا کی گفته MD5 و SHA1 لو رفتن؟ ابداً اینطور نیست. علت اینکه میگن ضعیف هستن هم اینه که اکثر سایتها دیکشنریهای قدرتمندی از رمزها و نسخه خام اونها دارن که بصورت Lookup Table ازشون استفاده میکنن تا بگن رمزی که وارد شده، معادل چه متن خامی هست نه اینکه این الگوریتم برگشت پذیر باشن یا لو رفته باشن. همون MD5 و SHA1 هم با ترکیب Salt و Pepper مناسب و تکنیکهای Key Stretching مثل Multiple Hash و... قادر به تولید رمزهای قدرتمند و غیرقابل شکستن هستن. برای مثال، شما رمزی که با این تابع تولید میشه رو اگه تونستین بشکنید (با تمام سایتهای موجود برای این کار)، من حرفتون رو قبول میکنم:
    function HashPassword($password, $salt) {
    for($i = 1; $i < 1000; $i++) {
    $password = md5('www.i-nahad.ir' . $password . $salt);
    }
    return $password;
    }

  5. #5
    کاربر دائمی
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    جنوب عشق است
    پست
    1,557

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

        function HashPassword( $pw ) {
    for($i = 0; $i < 40000; $i++) {
    $pw = md5(md5(md5(base64_encode($pw . $pw . 'veteran' . $i) . $pw . $i * 5000 . md5($i))));
    }
    return $pw;
    }

    من از این استفاده میکنم.

  6. #6
    کاربر دائمی آواتار masiha68
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    نقطه ی صفر مرزی
    پست
    816

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط Veteran مشاهده تاپیک
        function HashPassword( $pw ) {
    for($i = 0; $i < 40000; $i++) {
    $pw = md5(md5(md5(base64_encode($pw . $pw . 'veteran' . $i) . $pw . $i * 5000 . md5($i))));
    }
    return $pw;
    }

    من از این استفاده میکنم.
    اگه همزمان صداتا هش توی سیستم انجام بشه میشه یه حلقه ی 40000*100 که سیستم رو کند می کنه
    همون 20-30 بار حلقه اجرا بشه کافیه و اینکه هیچوقت از عدد رند برای تکرار حلقه استفاده نکن
    و اقای شهرکی ... توی سایت پی اچ پی نوشته از اینا استفاده نکنید و لو رفتنم هم تقریبا یعنی همین ...که یکی بتونه پسورد هش شده ی شما رو بدست بیاره ... حالا شما میاین یکم کار رو سخت می کنین ولی به هر حال توصیه شده از اینا استفاده نشه

  7. #7

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    اگه بیاییم مثلاً 8 کاراکتر خاص از md5 یه کلمه رو ذخیره کنیم کسی میتونه اون رو decript کنه؟ چون برای استفاده از سایتهایی که decript میکنن به تمام 32 حرف نیاز داریم! خیلی وقته برام سواله امنیت این روش چجوریاست؟

  8. #8
    کاربر دائمی آواتار masiha68
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    نقطه ی صفر مرزی
    پست
    816

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط سوداگر مشاهده تاپیک
    اگه بیاییم مثلاً 8 کاراکتر خاص از md5 یه کلمه رو ذخیره کنیم کسی میتونه اون رو decript کنه؟ چون برای استفاده از سایتهایی که decript میکنن به تمام 32 حرف نیاز داریم! خیلی وقته برام سواله امنیت این روش چجوریاست؟
    اینم یه روشیه ... ولی با همون کاری که اقای شهرکی انجام دادن هم میشه هش های خوبی تولید کرد که دیکریپت کردنشون چند ماه وقت بخاد و اکثر سایت هایی که ما می سازیم ارزش اینقد وقت صرف کردن رو نداره

  9. #9
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    با همون کاری که اقای شهرکی انجام دادن هم میشه هش های خوبی تولید کرد که دیکریپت کردنشون چند ماه وقت
    دوست عزیز. این ها hash هستند ! برگشت پذیر نیستند. سایت هایی که توی اینترنت این کار را انجام میدهند در واقع از اطلاعاتی که توی جدوال دارند یک select میگیرند ! مثلا میدونند md5 رشته ۱۲۳۴ چی میشه ! ولی کسی قادر به کشف اون از روی خود md5 به صورت معکوس نیست !

    روشی که جناب شهرکی گفتند کاملا تایید میشه ! در ضمن مگه شما برای NSA برنامه مینویسین ؟ میدونین هستند خیلی از سایت های معروف که هنوز کلمه عبور را به صورت غیر hash شده ذخیره میکنند ؟ من نمیگم اینطوری عمل کنین اما گیر ندین ! اون مطلبی هم که توی سایت php هست منظورش یکبار hash کردن رشته بوده !

  10. #10
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    حالا که بحثش گرمه. توصیه میکنم پسورد ها را با توابعی مثل hash_pbkdf2 یا password_hash تبدیل به hash کنید. این توابع برای همین منظور تولید شدند و اون قضیه تکرار hash را رعایت میکنند.
    یکی دیگه از موضوعات خیلی مهم اینه که کاربر را ملزم کنید طول password ش بیش از ۶ باشه و حتما از عدد و حروف لاتین بزرگ و کوچیک و علائم استفاده کنه ! میدونم کمی ممکنه اذیت بشه ! اما اگه امنیت تا این حد مهمه بهتره این کار را انجام بدین.

  11. #11

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    چطوری میتونم یک پسوردی که با md5 کد گذاری شده و در دیتابیس زخیره شده رو وقتی از دیتابیس میخونم دیکود کنم و نمایش بدم

    مثلا 12345679 کد شده و به صورت 1d25df47er82xf1er44er8 در دیتابیس زخیره شده حالا وقتی میخمام نمایشش بدم بجای 1d25df47er82xf1er44er8 به صورت 123456789 نمایش داده بشه

  12. #12
    کاربر دائمی
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    جنوب عشق است
    پست
    1,557

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    الگوریتم های هش، غیر قابل برگشت هستند
    مثلا نمیشه به طور مستقیم از روی یک هش، مقدار اولیه رو تشخیص داد.
    شما باید هش 123 رو با اون مقدار که توی دیتابیش هست مقایسه کنید و اگر مساوی بود، یک کاری انجام بشه

  13. #13

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    من میخوام مثلا مبلغ یک کالایی رو به صورت کد شده زخیره کنم وبعد وقتی کاربر اطلاعات قیمت اون کالا رو به نمایش در میاره مبلغ درست رو ببینه نه کد شده رو

  14. #14
    کاربر دائمی آواتار meysam1366
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    ایران/تهران
    پست
    448

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    سلام دوست عزیز

    چرا شما میخواید اینکار رو انجام بدید؟

    چون تا اونجایی که بنده اطلاع دارم نشون دادن قیمت مشکل امنیتی نداره و دارید خودتون رو اذیت می کنید

  15. #15

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط meysam1366 مشاهده تاپیک
    سلام دوست عزیز

    چرا شما میخواید اینکار رو انجام بدید؟

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

  16. #16

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

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

  17. #17

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    دوستان این همه میگید لو رفته یه لینکی چیزی بدید ما هم با خبر بشیم مگه میشه خود سایت php گفته که اینا قابل decode به راحتی نیست مگه اینکه یکی بیکار باشه بشینه یه تعداد رمز ساده رو کد کنه بعد بگه مثلا 1234 میشه "فلان" ولی کلا دوتا md5 و sha1 رو قاطی کنی هیچ کس هک نمیکنه .
    ضمنا خارجی ها که بیکار نیستن بیان سایت ایرانی هک کنن این ایرانیان سایت ایرانی هک میکنن که اونم فکر نکنم به این حد رسیده باشن که بتونن یه همچین کار کنن .
    این که لو رفته واقعا خنده داره به خدا

  18. #18
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    موضوع لو رفتن نیست ! موضوع اینه که الگوریتم مثلا MD5 خیلی سریع تولید میشه و با استفاده کردن از مثلا ۱۰ تا پردازنده کارت گرافیکی های موجود nvidia میشه در هر ثانیه ۱۰۰ میلیون رشته md5 تولید کرد (حالا فرض کن ۱۰۰ تا ابر کامپیوتر چیکار میکنن) و در نتیجه brute force خیلی سریع رمز های شکننده و حتی قوی را پیدا میکنه. حالا اگه ما salt های غیر همسان داشته باشیم و به تعداد زیاد هر hash را دوباره hash کنیم ،‌ زمان بیشتری لازمه تا این hash شکسته بشه. همین

    موضوع روشن و مشخصه ، کمی نیاز به تحقیق و بررسی داره.

  19. #19

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نظر من هم استفاده از الگوریتم MD5 همراه با salt هستش.

  20. #20

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط why.darkness مشاهده تاپیک
    نظر من هم استفاده از الگوریتم MD5 همراه با salt هستش.
    میشه یک مثال بزنید و خیلی ساده توضیح بدین چطوری یاد بگیرم

  21. #21

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط Unique مشاهده تاپیک
    موضوع اینه که الگوریتم مثلا MD5 خیلی سریع تولید میشه و با استفاده کردن از مثلا ۱۰ تا پردازنده کارت گرافیکی های موجود nvidia میشه در هر ثانیه ۱۰۰ میلیون رشته md5 تولید کرد
    در حال حاضر با یک کارت گرافیک میشه حداقل چند میلیارد هش md5 در هر ثانیه تولید کرد.

  22. #22

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    از نظر علم و اصولش دیگه نباید از MD5 و SHA1 برای هش پسورد استفاده کرد.
    اصولا هم این الگوریتم ها از اول هم برای کاربرد هش طراحی نشدن و برای این کار مناسب نیستن.
    ولی واسه برنامه های 99% از برنامه نویسان عزیز، مشکلی نداره، چون امنیت برنامشون در کل اونقدری حرفه ای و بالا نیست که نگرانی عمدهء ما هش پسوردشون باشه
    چون میگن امنیت مثل یک زنجیره، که استحکام کل اون برابر استحکام ضعیف ترین حلقهء زنجیره (اگر چند یا حتی اکثریت حلقه های زنجیر خیلی قوی هم داشته باشیم، بازم زنجیر از محل حلقه های ضعیف تر پاره میشه - باید تمام حلقه ها تقریبا به یک اندازه قوی باشن).
    البته از هش ساده استفاده نکنید، بلکه یک روشی شبیه اونی که مهندس شهرکی گذاشت استفاده کنید حداقل.
    بهرحال بنده در پروژهء خودم از SHA256 استفاده کردم، که حتی اینم حرفه ای نیست، چون برای هش کردن الگوریتم های مخصوص هش و قوی تری وجود دارن.
    الگوریتم حرفه ای برای هش bcrypt است و scrypt. البته اینا هم باز یخورده نکات فرعی و جزییاتی داره واسه خودشون که بدون نقص و با امنیت حداکثری پیاده سازی بشن (علم امنیت/رمزنگاری اینقدر گسترده و پیچیده است و نکات زیاد داره که آدم نمیتونه همش رو مدام حتی اشاره کنه).

    توصیه تخصصی (برای حرفه ای ها و برنامه های خفن از نظر امنیتی):

    MD5 و SHA1 امروزه الگوریتم های شکسته شده و منسوخ بحساب میان و مدتهاست از بیشتر استانداردهای رسمی خارج شدن، هرچند در کاربردهای زیادی هنوز استفاده میشن (و در بعضی کاربردهای خاص واقعا مشکل زیادی هم ندارن)، اما استفاده از اونا در کدها و برنامه های جدید اصلا توصیه نمیشه. این توصیه فقط به کاربرد هش کردن هم محدود نمیشه، بلکه در بقیهء کاربردها (مثل تولید کلیدهای رمزنگاری) هم توصیه نمیشن. البته اگر بقدر کافی در امنیت و رمزنگاری تخصص و اطلاعات و بینش داشته باشید، ممکنه یوقت ها در شرایط و موارد خاصی از این الگوریتم ها استفاده کنید، اما اینم باز توصیه نمیشه و بهتره انجام نشه.
    آخرین ویرایش به وسیله eshpilen : یک شنبه 04 خرداد 1393 در 12:50 عصر

  23. #23

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط MMSHFE مشاهده تاپیک
    function HashPassword($password, $salt) {
    for($i = 1; $i < 1000; $i++) {
    $password = md5('www.i-nahad.ir' . $password . $salt);
    }
    return $password;
    }
    درواقع این الگوریتم هم چندان قوی نیست.
    شما فکر کن فقط با یک کارت گرافیک امروزی میشه در هر ثانیه مثلا 3 میلیارد هش md5 رو تولید کرد.
    همهء کارهایی که شما کردی، منجمله اینکه عملیات رو 1000 بار تکرار کردی، چقدر میتونن این عملیات رو کند کنن؟
    نهایت مثلا 3 میلیارد بر ثانیه تبدیل میشه به 2 میلیون بر ثانیه.
    امکان تست 2 میلیون پسورد بر ثانیه، با یک PC معمولی امروزی، بنظرم بازم بیش از حد خطرناک باشه. یعنی درصد قابل توجهی از کاربران ممکنه پسوردهایی داشته باشن که در دیکشنری های بزرگ پسوردهای متداول/قابل حدس موجود باشه یا بسادگی بوسیلهء Brute-force تمام ترکیبات ممکن در یک بازهء خاص، کشف بشن.
    مثلا تمام بازهء پسوردهای 8 کاراکتری مرکب از حروف کوچک، اعداد، و چند کاراکتر خاص (_ فاصله * # - + =)، رو میشه در حدود 68 روز تولید کرد! (با همین سرعت 2 میلیون بر ثانیه)
    فکر میکنم خیلی از کاربران از پسوردهایی در همین حد یا حتی ضعیف تر استفاده میکنن.
    یادمون نره: فقط یک PC معمولی!
    اگر از سرورهای قدرتمند/چندین کارت گرافیک/پردازش توزیع شده (چندین رایانه) استفاده بشه، اونوقت این زمان به همون نسبت کمتر میشه.
    تازه فرضی که بنده کردم که سرعت تست پسوردها برای کرکر تقریبا به همون نسبت دورهای الگوریتم شما پایین میاد، فرض بقدر کافی مطمئنی نیست از نظر علمی و تخصصی، و احتمالش خیلی کم نیست که در عمل با متدهای خاصی بشه این محدودیت رو خیلی کمتر کرد (یک دلیل این عدم اطمینان هم همینه که این الگوریتم ها توسط متخصصان رمزنگاری و برای کاربرد هش طراحی نشدن). این مسائل یجوری مثل ریاضیات میمونه که یک گزاره ای تا بصورت ریاضی اثبات کامل/بی نقص/روشنی نشه، نمیشه ازش اطمینان کافی پیدا کرد.

  24. #24
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    در حال حاضر با یک کارت گرافیک میشه حداقل چند میلیارد هش md5 در هر ثانیه تولید کرد.
    من کارت گرافیک قدیمی خودمو گفتم ;). کلا قصدم این بود که خواننده متوجه بشه چه راحت این کد ها generate میشوند.

    تا اونجا که من میدونم بهترین روش استفاده از PBKDF2 هست که php ازش پشتیبانی میکنه و توابع مجرا هم اینجا هست اگه کسی نتونه روی سرور خودش نصب کنه. در ضمن PBKDF2 توسط NIST برای password storage تایید شده.

  25. #25

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط hamidhassas مشاهده تاپیک
    میشه یک مثال بزنید و خیلی ساده توضیح بدین چطوری یاد بگیرم
    شاید این مفید باشه : http://www.sitepoint.com/password-hashing-in-php/

  26. #26

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    سلام من از روش bcrypt زیر استفهده می کنم آیا این روش حرفه ایه؟ اگه نه حرفه ای ترین راه را پیشنهاد کنید! ممنون

    class Bcrypt()
    {
    function generateHash( $password )
    {
    if( defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH ){
    $salt='$2y$11$' . substr(md5(uniqid(rand(),true)),0,22);
    return crypt( $password , $salt );
    }
    }
    function verify( $password , $hashedPassword )
    {
    return crypt( $password , $hashedPassword ) == $hashedPassword;
    }
    }



    این چی؟
    class Bcrypt {
    private $rounds;
    public function __construct($rounds = 12) {
    if(CRYPT_BLOWFISH != 1) {
    throw new Exception("bcrypt not supported in this installation. See http://php.net/crypt");
    }

    $this->rounds = $rounds;
    }

    public function hash($input) {
    $hash = crypt($input, $this->getSalt());

    if(strlen($hash) > 13)
    return $hash;

    return false;
    }

    public function verify($input, $existingHash) {
    $hash = crypt($input, $existingHash);

    return $hash === $existingHash;
    }

    private function getSalt() {
    $salt = sprintf('$2a$%02d$', $this->rounds);

    $bytes = $this->getRandomBytes(16);

    $salt .= $this->encodeBytes($bytes);

    return $salt;
    }

    private $randomState;
    private function getRandomBytes($count) {
    $bytes = '';

    if(function_exists('openssl_random_pseudo_bytes') &&
    (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')) { // OpenSSL is slow on Windows
    $bytes = openssl_random_pseudo_bytes($count);
    }

    if($bytes === '' && is_readable('/dev/urandom') &&
    ($hRand = @fopen('/dev/urandom', 'rb')) !== FALSE) {
    $bytes = fread($hRand, $count);
    fclose($hRand);
    }

    if(strlen($bytes) < $count) {
    $bytes = '';

    if($this->randomState === null) {
    $this->randomState = microtime();
    if(function_exists('getmypid')) {
    $this->randomState .= getmypid();
    }
    }

    for($i = 0; $i < $count; $i += 16) {
    $this->randomState = md5(microtime() . $this->randomState);

    if (PHP_VERSION >= '5') {
    $bytes .= md5($this->randomState, true);
    } else {
    $bytes .= pack('H*', md5($this->randomState));
    }
    }

    $bytes = substr($bytes, 0, $count);
    }

    return $bytes;
    }

    private function encodeBytes($input) {
    // The following is code from the PHP Password Hashing Framework
    $itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz0123456789';

    $output = '';
    $i = 0;
    do {
    $c1 = ord($input[$i++]);
    $output .= $itoa64[$c1 >> 2];
    $c1 = ($c1 & 0x03) << 4;
    if ($i >= 16) {
    $output .= $itoa64[$c1];
    break;
    }

    $c2 = ord($input[$i++]);
    $c1 |= $c2 >> 4;
    $output .= $itoa64[$c1];
    $c1 = ($c2 & 0x0f) << 2;

    $c2 = ord($input[$i++]);
    $c1 |= $c2 >> 6;
    $output .= $itoa64[$c1];
    $output .= $itoa64[$c2 & 0x3f];
    } while (1);

    return $output;
    }
    }

    کدهای دوم از http://stackoverflow.com/questions/4...sswords-in-php است

  27. #27

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    کسی نیس تاپیک قبلی رو جواب بده؟

  28. #28

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    کسی جواب نمیده ؟

  29. #29

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط Unique مشاهده تاپیک
    تا اونجا که من میدونم بهترین روش استفاده از PBKDF2 هست که php ازش پشتیبانی میکنه و توابع مجرا هم اینجا هست اگه کسی نتونه روی سرور خودش نصب کنه. در ضمن PBKDF2 توسط NIST برای password storage تایید شده.
    تاجاییکه بنده میدونم، PBKDF2 با اینکه توسط NIST استاندارد شده، ولی بهتر از bcrypt نیست، و درواقع بعکس، bcrypt قوی تر از PBKDF2 است.
    در تمام منابعی که تاحالا خوندم bcrypt رو توصیه کردن و نه PBKDF2 رو (وقتی اشاره به bcrypt هم شده). بعضی وقتا هم صراحتا به قوی تر بودن bcrypt نسبت به PBKDF2 اشاره کردن.
    فکر کنم PBKDF2 با اینکه استاندارد شده اما الان آلترناتیوهای خیلی قوی تری مثل bcrypt و scrypt هست. PBKDF2 بنظرم قدیمیه و صرف اینکه یه زمانی توسط NIST بعنوان استاندارد معرفی شده (الان نمیدونم وضعیتش از نظر رسمی یا غیررسمی در دید NIST چیه)، دلیل نمیشه که بگیم در حال حاضر هم بهترین الگوریتم برای هش کردن پسورد است (ضمن اینکه قابل قبول/استاندارد بودن، از دید رسمی یا غیررسمی، با بهترین بودن تفاوت میکنه).
    محاسبات اشاره شده در این مقاله هم نشون میدن که در کل bcrypt از PBKDF2 به نحو قابل توجهی بهتر عمل میکنه: http://www.hamidreza-mz.tk/?p=506

  30. #30

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط Mori Bone مشاهده تاپیک
    سلام من از روش bcrypt زیر استفهده می کنم آیا این روش حرفه ایه؟ اگه نه حرفه ای ترین راه را پیشنهاد کنید! ممنون

    class Bcrypt()
    {
    function generateHash( $password )
    {
    if( defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH ){
    $salt='$2y$11$' . substr(md5(uniqid(rand(),true)),0,22);
    return crypt( $password , $salt );
    }
    }
    function verify( $password , $hashedPassword )
    {
    return crypt( $password , $hashedPassword ) == $hashedPassword;
    }
    }



    این چی؟
    class Bcrypt {
    private $rounds;
    public function __construct($rounds = 12) {
    if(CRYPT_BLOWFISH != 1) {
    throw new Exception("bcrypt not supported in this installation. See http://php.net/crypt");
    }

    $this->rounds = $rounds;
    }

    public function hash($input) {
    $hash = crypt($input, $this->getSalt());

    if(strlen($hash) > 13)
    return $hash;

    return false;
    }

    public function verify($input, $existingHash) {
    $hash = crypt($input, $existingHash);

    return $hash === $existingHash;
    }

    private function getSalt() {
    $salt = sprintf('$2a$%02d$', $this->rounds);

    $bytes = $this->getRandomBytes(16);

    $salt .= $this->encodeBytes($bytes);

    return $salt;
    }

    private $randomState;
    private function getRandomBytes($count) {
    $bytes = '';

    if(function_exists('openssl_random_pseudo_bytes') &&
    (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')) { // OpenSSL is slow on Windows
    $bytes = openssl_random_pseudo_bytes($count);
    }

    if($bytes === '' && is_readable('/dev/urandom') &&
    ($hRand = @fopen('/dev/urandom', 'rb')) !== FALSE) {
    $bytes = fread($hRand, $count);
    fclose($hRand);
    }

    if(strlen($bytes) < $count) {
    $bytes = '';

    if($this->randomState === null) {
    $this->randomState = microtime();
    if(function_exists('getmypid')) {
    $this->randomState .= getmypid();
    }
    }

    for($i = 0; $i < $count; $i += 16) {
    $this->randomState = md5(microtime() . $this->randomState);

    if (PHP_VERSION >= '5') {
    $bytes .= md5($this->randomState, true);
    } else {
    $bytes .= pack('H*', md5($this->randomState));
    }
    }

    $bytes = substr($bytes, 0, $count);
    }

    return $bytes;
    }

    private function encodeBytes($input) {
    // The following is code from the PHP Password Hashing Framework
    $itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz0123456789';

    $output = '';
    $i = 0;
    do {
    $c1 = ord($input[$i++]);
    $output .= $itoa64[$c1 >> 2];
    $c1 = ($c1 & 0x03) << 4;
    if ($i >= 16) {
    $output .= $itoa64[$c1];
    break;
    }

    $c2 = ord($input[$i++]);
    $c1 |= $c2 >> 4;
    $output .= $itoa64[$c1];
    $c1 = ($c2 & 0x0f) << 2;

    $c2 = ord($input[$i++]);
    $c1 |= $c2 >> 6;
    $output .= $itoa64[$c1];
    $output .= $itoa64[$c2 & 0x3f];
    } while (1);

    return $output;
    }
    }

    کدهای دوم از http://stackoverflow.com/questions/4...sswords-in-php است
    جواب می خوام

  31. #31

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    اگه امکان داره به این سوال بنده حقیر هم جواب بدین و از کلمه شاید و اینها هم استفاده نکنید درسته امنیت نسبیه ولی اینقدر هم شاید نداره (حداقل واسه رمزنگاری)
    نقل قول نوشته شده توسط سوداگر مشاهده تاپیک
    اگه بیاییم مثلاً 8 کاراکتر خاص از md5 یه کلمه رو ذخیره کنیم کسی میتونه اون رو بدست بیاره؟ چون برای بدست آوردن اصل پسوردی که مثلاً به صورت MD5 ذخیره شده به تمام 32 حرف نیاز داریم! امنیت این روش چجوریاست؟
    تشکر
    (-------
    هرچند کسی که علمش رو داشته باشه و بخواد نفوذ بکنه کار خودش رو میکنه برای سایتهایی که یکنفره ساخته شدن و به نظرم اینجوری نیست که یارو به در بسته بخوره و پا پس بکشه. چند وقت پیش پلیس فتا یه نوجوان زیر 18 سال رو به خاطر هک کردن سایت های ایرانی و فروختن اطلاعات کاربرها دستگیر کرده بود ازش پرسید وضعیت امنیت سایتهای ایرانی رو چطوری دیدی؟ گفت: متوسط رو به پایین (40 درصد مسائل امنیتی لحاظ میشه و اکثراً از اون 60 درصد غافل اند). به نظرم رمزنگاری جزو اون 60 درصده....
    -------)
    آخرین ویرایش به وسیله سوداگر : یک شنبه 04 خرداد 1393 در 23:35 عصر دلیل: 60

  32. #32

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

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

  33. #33

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط سوداگر مشاهده تاپیک
    اگه بیاییم مثلاً 8 کاراکتر خاص از md5 یه کلمه رو ذخیره کنیم کسی میتونه اون رو بدست بیاره؟ چون برای بدست آوردن اصل پسوردی که مثلاً به صورت MD5 ذخیره شده به تمام 32 حرف نیاز داریم! امنیت این روش چجوریاست؟
    گفتم اول این سوال رو جواب بدم تا دارم میرم خونه (سر کارم)، چون راحتتر و کوتاهتره جوابش.
    اگر شما بیای و 8 کاراکتر از 32 کاراکتر خروجی هگز md5 رو جدا کنی و در دیتابیس خودت فقط اون 8 کاراکتر رو ذخیره کنی چی میشه؟
    خب اول از نظر امنیت سایت خودت خیلی بد میشه!
    چرا؟
    چون شانس تصادم هش ها رو به شدت بالا میبری.
    خروجی باینری md5 برابر با 128 بیت (16 بایت) است که شما بطور معمول در قالب 32 کاراکتر هگز مشاهده میکنی (هر دو کاراکتر هگز نمایندهء مقدار یک بایت (8 بیت) باینری هستن).
    تعداد حالتهای ممکن برای این هش برابر 2 به توان 128 است که عدد خیلی بزرگیه و هیچ کرکری در دنیا نمیتونه تمام این حالتها یا حتی کسری غیرناچیز از اون رو تست کنه.
    خروجی ای که شما با استفاده از فقط 8 کاراکتر از 32 کاراکتر داری برابر 4 بایت یا 32 بیت باینری میشه، که بنابراین تعداد حالتهای ممکنش 2 به توان 32 است (حدود 4 میلیارد حالت).
    میدونی این یعنی چی؟ یعنی پسورد کاربر هرچی که باشه، حتی قوی ترین پسوردهای دنیا، تعداد هش های ممکن سیستم شما حدود 4 میلیارد بیشتر نیست، و این یک فاجعهء امنیتیه!
    در نفوذ به سیستم شخص شما، کرکر نیازی نداره که پسورد اصلی رو که کاربر انتخاب کرده بوده بدست بیاره، بلکه کافیه یک رشته ای رو بدست بیاره که 8 کاراکتر اول از هشی که تولید میکنه برابر با همون 8 کاراکتر هش پسورد کاربر باشه، که اینم نهایتش با تست حدود 4 میلیارد رشتهء ورودی میتونه بدست بیاره.
    بنابراین کرکر میتونه برای هر هش موجود در دیتابیس شما، پسوردی رو بدست بیاره که بتونه باهاش بجای کاربر مورد نظر لاگین کنه. دقت کنید این پسورد لزوما پسوردی که کاربر انتخاب کرده بوده نیست، بلکه صرفا رشته ای است که 8 کاراکتر از هش اون با 8 کاراکتر از هش پسورد اصلی کاربر یکسان است.
    ضمنا دقت کنید که نیازی نیست این 8 کاراکتر حتما ترتیب خاصی داشته باشن و از ابتدا یا انتها یا وسط و هرجای خاص از هش اصلی جدا شده باشن. بهرحال شما 8 کاراکتر رو از یک هش به هر صورتی جدا کنی و فقط از همین 8 کاراکتر برای احراز هویت کاربر استفاده کنی، نتیجه همین فاجعه میشه!
    بنابراین بخاطر سایت و کاربران خودتون، همچین کاری نکنید.
    هرچند بله هکر اونوقت احتمالا نمیتونه پسورد اصلی کاربر رو بدست بیاره (چون تمام هش رو نداره - و البته به شرطی که پسورد کاربر بیش از حد ضعیف نبوده باشه) و بنابراین نمیتونه به اکانتهای دیگر کاربر در سایتهای دیگر به این واسطه نفوذ کنه، ولی بهرحال به سایت خودتون که میتونه نفوذ کنه، چون به همین شکل مثل هکر، شما هم نمیتونید میان پسورد اصلی کاربر و رشته های دیگری که فقط اون چند کاراکتر از هش اونا با هش پسورد کاربر مورد نظر یکسان درمیاد تفاوتی قائل بشید.
    آخرین ویرایش به وسیله eshpilen : دوشنبه 05 خرداد 1393 در 12:47 عصر

  34. #34

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط eshpilen مشاهده تاپیک
    حضراتی که سوالاتی کردن و جواب میخوان عجله نکنن. نیاز به تحقیق و بررسی و وقت بیشتری داره، بنده هم که سرم شلوغه. سعی میکنم در اولین فرصت یکسری مقاله ها رو دوباره مرور کنم و کدها رو هم نگاه و فکر کنم و جواب بدم. کار میبره
    سلام و ممنون از این همه اطلاعاتی که در اختیار همه می گذارید به صورت مجانی البته خیرخواهانه
    میشه این مقالاتی که می خواهید بخونید رو برای ما هم بگذارید؟

    لطفا به سوال من در هم جواب دهید

  35. #35

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    منظورم صرف 8 کاراکتر نبود (از قلمم یهو پرید!) ... منظورم اینه که چیزی غیر از 32 حرف باشه حالا شما 16 حرفش کن، یه چیزی غیر از 32
    یا مثلا کاراکترهای md5 و sha رو لابه لای همدیگه قرار بدیم و در نهایت 32 حرف ذخیره بشه با همون تعداد حالتهای ممکن برای md5....
    این رو گفتم چون سرعت تولیدش بیشتر از حلقه تکرار هست...
    آخرین ویرایش به وسیله سوداگر : دوشنبه 05 خرداد 1393 در 13:34 عصر

  36. #36

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash



    function UniqueSalt($ID = NULL, $Length = NULL)
    {
    $ID = ($ID == NULL) ? uniqid(rand(), TRUE) : $ID;
    $Salt = uniqid(hash("sha256",$ID),TRUE);
    $Unique_Code = hash("sha256", $ID.$Salt);
    return $Length == NULL ? $Unique_Code : substr($Unique_Code, $Length);
    }

    من یکی از این تابع واسه تولید salt استفاده می کنم بعدش با sha256 هم هش پسورد رو انجام میدم

  37. #37

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط Mori Bone مشاهده تاپیک
    سلام و ممنون از این همه اطلاعاتی که در اختیار همه می گذارید به صورت مجانی البته خیرخواهانه
    میشه این مقالاتی که می خواهید بخونید رو برای ما هم بگذارید؟
    مقالهء خاصی نبود؛ امثال همین لینک هایی که کاربران بعضی وقتا میذارن. گفتم بخونم یه مرور و یادآوری مجدد بشه برام.

    لطفا به سوال من در هم جواب دهید
    دیشب که وقت کردم حداقل 2 ساعت روش کار کردم.
    دوتا کلاس گذاشتید. یکیش مختصر و دیگری مفصل.
    اونی که مختصره، الگوریتم رندومش غیراصولیه.
    اونی که مفصله هم بد نیست ولی بنظر بنده باز جای کار داره و دارم روش کار میکنم. قضیه یک مقدار پیچیده و حجیم شد و نیاز به تحقیق بیشتری داره که بتونم کد نهایی ارائه کنم؛ میخوام برم توی سایتهای stackexchange و این حرفا در بعضی مواردش یه چیزایی بپرسم. ممکنه مدتی طول بکشه. بهرحال اگر شما عجله داری میتونی از همون کلاس استفاده کنی.

  38. #38

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط سوداگر مشاهده تاپیک
    منظورم صرف 8 کاراکتر نبود (از قلمم یهو پرید!) ... منظورم اینه که چیزی غیر از 32 حرف باشه حالا شما 16 حرفش کن، یه چیزی غیر از 32
    یا مثلا کاراکترهای md5 و sha رو لابه لای همدیگه قرار بدیم و در نهایت 32 حرف ذخیره بشه با همون تعداد حالتهای ممکن برای md5....
    این رو گفتم چون سرعت تولیدش بیشتر از حلقه تکرار هست...
    همش ایراد داره.
    قاطی کردن چندتا هش خوب نیست.
    فرض بر پنهان ماندن الگوریتم هم نکنید، چون میشه امنیت از طریق تیرگی، که بطور معمول اصولی نیست.
    همیشه فرض کنید هکر کل و جزییات الگوریتم شما رو داره/میدونه و خوب بهش درک و احاطه داره.
    حتی خودتون هم نباید بتونید به این سادگی (فقط با دونستن الگوریتم) ضعفی از الگوریتم خودتون بدست بیارید.
    تعداد کاراکترها رو هم هرچی کم کنید بهرحال یک طرف ضعیف میشه. یک طرف درجهء سختی رسیدن از هش به پسورد اصیله، طرف دیگر درجهء سختی پیدا کردن رشته ای که اون قسمت از هش اون برابر همون بخش از هش شما بشه. طول رو کم کنی، احتمال پیدا کردن اصل پسورد کمتر میشه ولی احتمال ایجاد تصادم در هش ها و پیدا شدن رشته ای با هش یکسان بیشتر میشه.
    16 هم بگیری، بهرصورت از اون سمت هم احتمال کشف اصل پسورد رو به همون نسبت کلی زیاد کردی، درحالیکه از این سمت هم احتمال تصادم هش وجود داره (خیلی بیش از حالت و محاسبات استاندارد). اینطوری میشه روزهء شک دار. نه از این طرف مطمئنی و نه از اون طرف.
    حالا جزییات و تحلیل و مثالهای عینی ترش بماند چون وقتش نیست و فکر نکنم زیاد هم نیاز باشه. بهرحال این رو درنظر بگیر که اونایی که الگوریتم های هش استاندارد رو طراحی کردن متخصص بودن و با کلی تحقیق و بررسی و تایید چنین الگوریتم هایی با چنین خصوصیاتی (منجمله طول خروجی اونا)، نهایی شدن. طول خروجی روی حساب و کتابی هست و اگر شما درش دست ببری، اون حساب و کتاب رو بهم میزنی و دیگه تضمین های تئوریک که داده شدن برقرار نیستن مگر اینکه دوباره تحلیل و بررسی و اثبات صورت بگیره به شکلی که بفهمی بقدر کافی اطمینان بهش هست، که اونم کار میبره و فرایند و منابع میخواد و باید افراد متخصص دارای دانش و صلاحیت کافی این کار رو بکنن.
    آخرین ویرایش به وسیله eshpilen : چهارشنبه 07 خرداد 1393 در 13:50 عصر

  39. #39

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    تاپیک اختصاصی درمورد الگوریتم bcrypt بعنوان بهترین الگوریتم متداول درحال حاضر برای هش پسورد: bcrypt - الگوریتم هش پسورد حرفه ای

    راستی این تاپیک هم باید به تالار امنیت منتقل بشه.

  40. #40

    نقل قول: بهترین گزینه برای رمز کدام است md5 یا sha یا crc32 یا hash

    نقل قول نوشته شده توسط eshpilen مشاهده تاپیک
    راستی این تاپیک هم باید به تالار امنیت منتقل بشه.
    تاپیک منتقل شد.

صفحه 1 از 2 12 آخرآخر

تاپیک های مشابه

  1. بهترین Framework جاوا اسکریپت کدام است ؟
    نوشته شده توسط Programmer 1 در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 7
    آخرین پست: سه شنبه 18 خرداد 1389, 22:35 عصر
  2. سوال: بهترین گزینه برای انتخاب 15 تا از 50 تای آخر یک جدول
    نوشته شده توسط chaalesh در بخش SQL Server
    پاسخ: 13
    آخرین پست: جمعه 24 خرداد 1387, 02:03 صبح
  3. بهترین گزینه برای کار با مودم
    نوشته شده توسط iranrose63 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: چهارشنبه 03 مرداد 1386, 19:46 عصر
  4. بهترین گزینه برای طراحی صفحات مدیریت
    نوشته شده توسط yavari در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: شنبه 17 تیر 1385, 16:37 عصر
  5. سی شارپ بهترین گزینه برای کار با دات نت است؟
    نوشته شده توسط khareh_siah در بخش C#‎‎
    پاسخ: 14
    آخرین پست: شنبه 05 فروردین 1385, 12:29 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •