移行の中に、encryption_key
次のような名前の文字列列があります。
$table->string('encryption_key')->unique();
特性を使用して暗号化コマンドを生成するコントローラーがあります。
use LiveChat;
public function create()
{
$this->header->insert([
'encryption_key' => $this->issueKey()
]);
$this->participants->insert([
'chat_id' => DB::getPdo()->lastInsertId(),
'user_id' => Auth::id()
]);
return response(['status' => true, 'chat_id' => DB::getPdo()->lastInsertId()], 200)
->header('Content-Type', 'application/json');
}
これまでのところ、特性は次のようになっています
trait LiveChat
{
protected function issueKey()
{
return random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
}
}
ただし、これをテストすると、次のエラーが発生します。
SQLSTATE [22007]:無効な日時書式:1366不正な文字列値: '\ xFFX \ x8Af \ X1F $ ...'行1(SQLの列'encryption_key'の:への挿入
chat_headers
(encryption_key
)の値(ÿXŠf\ X1F $ I™ ÒÂø¢Ú!£”…¸ÈÍØ7ÿDå\x00Œ¿3ê))
dd()
の応答をデバッグするために使用する$this->issueKey()
と、次のようになります。
b"Bp,[\x1A\¢®ù·š(×g6ùs=l«j,©;_ó8ýòúÍ6"
私はiconv()
そのように使用しようとしました
iconv("UTF-8", "ASCII", $this->issueKey())
それは私に
iconv():入力文字列で不正な文字を検出しました
DB内で将来参照するためにこのキーを保存するにはどうすればよいですか?
base64_encode
ストレージ用にそれを行うことができ、で元に戻すことができbase64_decode
ます。
アクセサー関数とミューテーター関数のセットを組み合わせると、これを自動的に行うことができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加