私はプロジェクトの暗号化に取り組んでおり、openssl_encrypt
とopenssl_decrypt
の作業方法についてはちょっと助けが必要なので、最も基本的で正しい方法を知りたいだけです。ここで私はこれまで得たものである:正しい方法php openssl_encryptを使用する
// To encrypt a string
$dataToEncrypt = 'Hello World';
$cypherMethod = 'AES-256-CBC';
$key = random_bytes(32);
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($cypherMethod));
$encryptedData = openssl_encrypt($dataToEncrypt, $cypherMethod, $key, $options=0, $iv);
$encryptedData
を復号化するとき、私は、その後の使用のために$cypherMethod
、$key
、および$iv
を格納します。 (、のは、私は値を格納する方法を詳しく説明していない感謝をしましょう!)
// To decrypt an encrypted string
$decryptedData = openssl_decrypt($encryptedData, $cypherMethod, $key, $options=0, $iv);
まず第一に、上記の例のコードはphp openssl_encrypt
を使用する方法の正しい例ですか?
第2に、正しい方法で$key
と$iv
を生成する方法はありますか?私は読書を続けているので、鍵は暗号的に安全でなければなりません。
最後に、AES-256-CBC
には32-byte
の値が必要ですか?はいの場合、その理由はopenssl_cipher_iv_length()
は長さとしてint(16)
だけを返しますか? int(32)
ではありませんか?
有益な情報をいただきありがとうございます。ただの簡単な質問ですが、私は1回の一般的な使用キーを使うべきですか、それとも毎回無作為に生成するべきですか? –
同じキーを使うことができます。 'openssl_encrypt'を呼び出すたびに新しいIVを生成するようにしてください。 – puzzlepalace