2

何よりもまず、パスワードをハッシュする方法(salt / bcryptなど)を尋ねていないことを繰り返したいと思います。私が行った他のすべてのプロジェクトでは、常にパスワードをハッシュ/ソルトしましたが、この場合、一時的にパスワードを取り戻す必要があります。

基本的に、パスワードをDBに保存してから、再度アクセスできるようにする必要があります。codeigniter(私が使用しているフレームワーク)では、mcryptとキー(32文字の長さである必要があることを示唆しています)を使用します。これで十分でしょうか?

編集

質問の理由:ミッションクリティカルな機密性の高いPDFをユーザーに送信できる必要があり、ユーザーをパスワードで保護する必要があります(理想的には同じパスワードを使用)。

SOとオフの人々と話し合った結果、パスワードを暗号化してはならず、常にハッシュ/ソルトするべきではないという結論に達しました。異なるサービスに同じパスワード/電子メールを使用する人の数を考えてみてください。したがって、アイテムを暗号化する必要がある場合は、別のPINまたはその他の必須ではないアイテムを使用する必要があるという結論に達しました。

ただし、ピンルートを使用してパスワードをハッシュ化したままにするつもりですが、理論的にこの問題をどのように処理するかについては、依然として非常に興味があります。

4

1 に答える 1

3

はい、SALT値を秘密にしておけば。

更新:人々は単純な答えに満足していないようです。拡張機能を使用mcryptすると、特定のシークレット値を使用してデータを暗号化できますSALT。人々がSALTを知らなければ、値を解読することはできません。

例:

<?php 
    define('SALT', 'whateveryouwant'); 

    function encrypt($text) 
    { 
        return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, SALT, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)))); 
    } 

    function decrypt($text) 
    { 
        return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, SALT, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))); 
    } 
?> 

もちろん、追加のセキュリティが必要な場合は、公開鍵インフラストラクチャの使用を検討してください。

于 2012-11-27T03:59:30.520 に答える