web-dev-qa-db-ja.com

使用固有のキーを使用して双方向のエンコード/デコードメソッドを作成する方法-PHP?

エンコードとデコードの2つの関数/メソッドが必要です。 これはパスワードを保存するためのものではありません。各ユーザーには、データをエンコードするための特定のキー/塩があります。

これは私がそれを機能させたい方法です:

function encode($str, $key) {
    // something fancy
}

function decode($str, $key) {
    // something fancy
}

$key = $logged_in_user->get_key();
$plain = 'abc abc 123 123';
$encoded_data = encode($plain, $key);
// some_fancy_encrypted_data_that_is_really_cooooool
$decoded_data = decode($encoded_data, $key);
// abc abc 123 123

もう1つは、この関数を使用するたびに、同じユーザーキーでencode関数を使用するたびに同じものを返す必要があることです。

どうすればいいですか?

14
Jason Silberman
$myVarIWantToEncodeAndDecode

キーを定義します(塩、スープなど):$key = "#&$sdfdfs789fs7d";

エンコードするには:

$encoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $myVarIWantToEncodeAndDecode, MCRYPT_MODE_CBC, md5(md5($key))));

デコードするには:

$decoded = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encoded), MCRYPT_MODE_CBC, md5(md5($key))), "\0");

注:mcrypt_decryptはPHP 7.1.0。この関数に依存することはお勧めしません。)の時点で非推奨になりました。

47
rinchik