Внутри моей миграции у меня есть строковый столбец с именем 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 $ ...' для столбца 'encryption_key' в строке 1 (SQL: вставить в chat_headers
(encryption_key
) значения (ÿXŠf \ x1F $ ¨ì ™ ÒÂø ¢ Ú! £ »… ¸ÈÍØ7ÿDå \ x00Œ¿3ê))
Если я использую dd()
для отладки ответа $this->issueKey()
, я получаю что-то вроде этого:
b"Bp,[\x1A\¢®ù·š(×g6ùs=l«j,©;_ó8ýòúÍ6"
Я пыталсяиспользовать iconv()
вот так
iconv("UTF-8", "ASCII", $this->issueKey())
Что дает мне
iconv (): обнаружен недопустимый символ во входной строке
Как можноЯ храню этот ключ для использования в будущем в моей БД?