2011-12-22 5 views
0

mcryptにとって最も安全な鍵は何ですか?mcrypt 128ビット鍵のための最も安全な鍵?

128ビットキーを使用するとはどういう意味ですか?それは何文字ですか?

私のキーは、数字と文字で32文字です。

私は自分のサイトに署名したユーザーの個人データを暗号化/復号化するためにmcryptを使用しています。

答えて

0

最も安全なキーのようなものはありません。それは "パスワード"のようなものです。 キーを使用すると、エンコードアルゴリズムが対称である場合にデータをエンコード/デコードできます。

128ビットのキーは、16バイトの128ビットで構成された単なるキーです。 ASCIIでは、1バイト= 1文字。ほとんどのキーはランダムなバイナリデータです。これはbase64でエンコードされ、24文字の文字列表現になります。

さらに、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); 
関連する問題