2011-12-22 7 views
0

mcrypt의 가장 안전한 키는 무엇입니까?mcrypt 128 비트 키를위한 가장 안전한 키?

128 비트 키를 사용한다는 것은 무엇을 의미합니까? 얼마나 많은 글자입니까?

내 키는 숫자와 문자가 포함 된 32 자입니다.

저는 mcrypt를 사용하여 내 사이트에 서명 한 사용자의 개인 데이터를 암호화/해독합니다.

답변

0

안전한 키 같은 건 없다. 그것은 "암호"와 같습니다. 키를 사용하면 인코딩 알고리즘이 대칭 인 경우 데이터를 인코딩/디코딩 할 수 있습니다.

128 비트 키는 16 비트 인 128 비트로 구성된 키입니다. ASCII에서 1 바이트 = 1 문자; 대부분의 키는 base64로 인코딩되어 24 자의 문자열 표현으로 이어질 수있는 임의의 2 진 데이터입니다.

게다가, mcrypt은 동일한 인터페이스를 사용하는 여러 인코딩 알고리즘을 사용할 수있게 해주는 php 확장 프로그램입니다. 키의 크기는 알고리즘에 따라 다릅니다. 선택한 알고리즘의 키 크기는 mcrypt_module_get_algo_key_size을 참조하십시오.

0

가장 안전한 키는 무작위 데이터 (바이너리는 꽤 괜찮음)입니다. 예, 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); 
관련 문제