簡體   English   中英

mcrypt 128位密鑰的最安全密鑰?

[英]Safest key for mcrypt 128 bit key?

什么是mcrypt最安全的密鑰?

使用128位密鑰是什么意思? 那是幾個字符?

我的鑰匙是32個字符,帶有數字和字母。

我正在使用mcrypt加密/解密登錄到我的網站的用戶的個人數據。

最安全的密鑰只是一堆隨機數據(二進制代碼相當不錯),是的,一個128位密鑰使用32個字符。 隨機數函數足以創建一個強鍵(如果您偏執,則對其進行哈希處理可能會有所幫助):

function nonce($l = 32, $raw = true){
    $ret = '';
    for($x = 0; $x < $l; $x++) $ret .= chr(mt_rand(0,255));
    return ($raw ? $ret : base64_encode($ret));
}

一個非常強大的哈希函數將如下所示(此哈希函數是PBKDF2哈希):

function hash($p, $s, $c = 5000, $kl = null, $a = 'SHA256'){
    $hl = strlen(hash($a, null, true));
    if(is_null($kl)) $kl = $hl;
    $kb = ceil($kl/$hl);
    $dk = '';
    for($block = 1; $block <= $kb; $block++){
        $ib = $b = hash_hmac($a, $s.pack('N', $block), $p, true);
        for($i = 0; $i < $c; $i++)
            $ib ^= ($b = hash_hmac($a, $b, $p, true));
        $dk .= $ib;
    }
    return substr($dk, 0, $kl);
}

您將像這樣使用它:

$key = hash(nonce(), nonce(), 5000, 32);

沒有最安全的鑰匙。 這就像一個“密碼”。 如果編碼算法是對稱的,則密鑰提供了允許您對數據進行編碼/解碼的功能。

128位密鑰只是由128位(即16個字節)組成的密鑰。 在ASCII中,1個字節= 1個字符; 但是大多數鍵只是隨機的二進制數據,可以對base64進行編碼,從而形成24個字符的字符串表示形式。

此外, mcrypt是php擴展,使您可以使用同一接口使用多種編碼算法。 密鑰的大小取決於算法。 有關所選算法的密鑰大小,請參見mcrypt_module_get_algo_key_size

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM