PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Thursday, February 10, 2022

[FIXED] How can I store random_bytes in a database in PHP?

 February 10, 2022     encryption, laravel, laravel-5, libsodium, php     No comments   

Issue

Inside of my migration I have a string column named encryption_key which looks like this:

$table->string('encryption_key')->unique();

I have a Controller that uses a trait to generate the encryption commands.

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');
}

The trait looks like this so far

trait LiveChat
{
    protected function issueKey()
    {
        return random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
    }
}

However, upon testing this I receive this error:

SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: '\xFFX\x8Af\x1F$...' for column 'encryption_key' at row 1 (SQL: insert into chat_headers (encryption_key) values (ÿXŠf\x1F$¨ì™ÒÂø¢Ú!£”…¸ÈÍØ7ÿDå\x00Œ¿3ê))

If I use dd() to debug the response of $this->issueKey() I get something like this:

b"Bp,[\x1A\¢®ù·š(×g6ùs=l«j,©;_ó8ýòúÍ6"

I have tried to use iconv() like so

iconv("UTF-8", "ASCII", $this->issueKey())

Which gives me

iconv(): Detected an illegal character in input string

How can I store this key to use for future reference inside my DB?


Solution

You can base64_encode it for storage, and undo it with base64_decode.

Putting together a set of accessor and mutator functions will let you do this in an automatic fashion.



Answered By - ceejayoz
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing