پیاده سازی تابع 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 جهت انجام اینکار وجود دارد اما درج تابع دستی آن نیز خالی از لطف نیست....

تابع بررسی صحت url...

تابع بررسی صحت یو آر ال. function is_valid_url($url) { return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url); }...

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

تابع زیر یک پارسر قدرتمند جهت شناسایی کلمات یک رشته و جداسازی آنهاست. این تابع یکی از توابع کاری موتور جستجوی گروه ما(وی2) است. تمامی بهینه سازیها در این تابع رعایت شده که هر چند ساده است!......

دسترسی به مقادیر آرایه بصورت کلیدهای غیر عددی با شماره کلید(گسترش تابع array slice)...

در آرایه هایی که کلیدهای آن غیر عددی است گرفتن مقادیر آن به صورت عددی اشتباه است یعنی......

نظر

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