پیاده سازی تابع PBKDF2

۴ سال پیش(به روز شده در ۴ سال پیش) پی اچ پی(PHP)(توابع) ۰

پیکربندی تابع رمزنگاری PBKDF2 مخفف Password-Based Key Derivation Function 2. طول نمک توصیه شده (استاندارد) حداقل 64 بیت است. برای مقدار تعداد تکرار(iteration count) حداقل مقدار 1000 توصیه شده است.

اطلاعات بیشتر در: http://en.wikipedia.org/wiki/PBKDF2

منبع: نامعلوم

/** PBKDF2 Implementation (described in RFC 2898)
 *
 *	@param   string  p   password
 *	@param   string  s   salt
 *	@param   int     c   iteration count (use 1000 or higher)
 *	@param   int     kl  derived key length
 *	@param   string  a   hash algorithm
 *
 *	@return  string  derived key
 */
function pbkdf2( $password, $salt, $count, $keylength, $hash = 'sha256' ) {
    $hl = strlen( hash( $hash, null, true ) ) ; # Hash length
    $kb = ceil( $keylength / $hl ) ; # Key blocks to compute
    $dk = '' ; # Derived key
    # Create key
    for ( $block = 1; $block <= $kb; $block++ ) {
        # Initial hash for this block
        $ib = $h = hash_hmac( $hash, $salt . pack( 'N', $block ), $password, true ) ;
        # Perform block iterations
        for ( $i = 1; $i < $count; $i++ ) # XOR each iterate

            $ib ^= ( $h = hash_hmac( $hash, $h, $password, true ) ) ;
        $dk .= $ib ; # Append iterated block
    }
    # Return derived key of correct length
    return substr( $dk, 0, $keylength ) ;
}
 
//out = þÔ¨¥ÝÂ’ïJ‘¡ê¸Ó;{„ɬq£î
echo pbkdf2( 'password', '%$gfhbqhf^dxjo6GG=G44**-GXGhvmpg8x6g5h6^&W%$25xfghx)fgHaljzFGH', 1000, 24 ) ;

صفحات پیشنهادی

جدا کردن 3 رقم 3 رقم اعداد جهت نمایش مقادیر پولی در php...

هر چند در php تابعی بنام number_format جهت انجام اینکار وجود دارد اما درج تابع دستی آن نیز خالی از لطف نیست....

تابع کنترل اطلاعات ورودی برای جلوگیری از تزریق به پایگاه داده...

ورودی‌ها همیشه باید کنترل شوند تا از خطراتی نظیر SQL Injection در امان بود. یک روش ساده و قوی برای این کار وجود دارد که خود وب سایت PHP آنرا توصیه نموده است. هر چند که شما می ...

محاسبه مقدار حافظه مصرف شده در RAM سیستم(سرور)...

با استفاده از تابع ()memory_usage براحتی میتوانید به مقدار حافظه مصرفی از RAM آگاهی یابید. این تابع از تابع اصلی()memory_get_usage استفاده می کند. function memory_usage() { return (int)(m...

تشخیص حجم فایل با استفاده از فرمت ورودی...

این تابع حجم فایل را گرفته و سپس با توجه به فرمت مشخص شده خروجی را مشخص خواهد کرد. آرگومان‌های ورودی کاملا واضح هستند اما باید گفت که مقدار precision$ قسمت اعشار خروجی را مشخص می کند که به طور پی...

نظر

نظری ثبت نشده است.
captcha image reload