Oturum Karma boyutu önemli mi?

0 Cevap php

Bir oturum karma için kullanmak doğru algoritma seçerken boyutu önemi var.

Geçenlerde bu article okumak ve oturum kimliği için bir karma oluşturmak için jakuzi kullanarak önerdi. Whirlpool 128 karakter karma dize üretir, bu çok büyük?

Plan bir db olarak oturum karma saklamaktır. Belki 64 karakter alanı (sha256), 96 karakter alanı (SHA384) veya 128 karakter alanı (jakuzi) ile arasında pek bir fark var mı? Girdap için yapılan ilk argümanlardan biri diğer algoritmaları hız vs oldu ama hız sonuçları SHA384 bakarak çok kötü adil değil.

128 karakterden fazla yapmak için daha küçük karma kesecek seçenek var.

Ben ihtiyaçları tabanlı algoritma değişen izin vermek, özgün kod pasajını değişiklik yaptım.

Update: İşte dize karma olma konusunda bazı tartışmalar oldu, bu yüzden ben kodu dahil ettik.


function generateUniqueId($maxLength = null) {
    $entropy = '';

    // try ssl first
    if (function_exists('openssl_random_pseudo_bytes')) {
        $entropy = openssl_random_pseudo_bytes(64, $strong);
        // skip ssl since it wasn't using the strong algo
        if($strong !== true) {
            $entropy = '';
        }
    }

    // add some basic mt_rand/uniqid combo
    $entropy .= uniqid(mt_rand(), true);

    // try to read from the windows RNG
    if (class_exists('COM')) {
        try {
            $com = new COM('CAPICOM.Utilities.1');
            $entropy .= base64_decode($com->GetRandom(64, 0));
        } catch (Exception $ex) {
        }
    }

    // try to read from the unix RNG
    if (is_readable('/dev/urandom')) {
        $h = fopen('/dev/urandom', 'rb');
        $entropy .= fread($h, 64);
        fclose($h);
    }

    // create hash
    $hash = hash('whirlpool', $entropy);
    // truncate hash if max length imposed
    if ($maxLength) {
        return substr($hash, 0, $maxLength);
    }
    return $hash;
}

0 Cevap