پیاده سازی تابع 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 ) ;

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

اجرای دستور INSERT در MySQL به صورت تابع در PHP...

دستور INSERT یکی از دستورات پرکاربرد در پایگاه داده MySQL است. در پروژه های بزرگ برای اجرای یک فرآیند مثلا ثبت کاربر ممکن است چندین بار این دستور مورد استفاده قرار گیرد. اگر بخواهیم به صورت دستی مدام ...

توابع رمزگذاری و رمزگشایی یک رشته با خروجی‌های متفاوت...

دو تابع encrypt و decrypt به ترتیب مربوط به رمزگذاری و رمزگشایی می باشند. اما تفاوتی که با حالت معمول دارند این است که خروجی تابع encrypt برای یک مقدار با هر بار فراخوانی متفاوت است. این ویژگی قطعا در...

برگرداندن کلیدهای آرایه به حالت uppercase یا lowercase...

تابع زیر , کلیدهای آرایه ورودی را به حروف کوچک یا حروف یزرگ تبدیل و سپس آرایه را بر می گرداند. این تابع می تواند استفاده خاص خود را داشته باشد مثلا وقتی بخواهیم ورودی ها را به آرایه ای تبدیل و سپس با ...

نمایش نام با فرمت مناسب(گسترش تابع ucwords)...

تابع ucwords برای بزرگ کردن حروف ابتدای کلمات یک رشته بکار می رود. البته زمانی این تابع کاربرد دارد که فاصله بین کلمات فضای خالی باشد(مثلا خط تیره را نیز جز کلمه بحساب می آورد). حال زمانیکه فاصله بین ...

نظر

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