Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cryptographically secure and unique string in PHP

Tags:

security

php

I've been using

$string = bin2hex(openssl_random_pseudo_bytes(16)) . uniqid();

Because I need some string that is both crytopgrahically secure and unique. Question is: is this a naive approach? By using the result of uniqid() tacked onto the end of the string,am I giving away any information that might compromise the security of the string? I ask this because uniqid() is based on system time, and my concern is whether that could give any information away that allows an attacker to guess future outputs?

Thanks

like image 348
jack Avatar asked May 09 '26 16:05

jack


1 Answers

You should use one from the following to generate crytopgrahically secure unique string/number,

  1. bin2hex(openssl_random_pseudo_bytes(16, TRUE)); // Refer manual - (PHP 5 >= 5.3.0, PHP 7)
  2. bin2hex(random_bytes(16)); // Refer manual - (PHP 7)
  3. If you want to generate random number, you can use random_int(100, 999) // Refer manual - (PHP 7)
like image 150
Savan Gadhiya Avatar answered May 12 '26 06:05

Savan Gadhiya