Re: Extending uniqid() or not?
| From: | Yasuo Ohgaki | Date: | Mon, 03 Feb 2014 05:08:24 +0000 |
| Subject: | Re: Extending uniqid() or not? | ||
| References: | 1 2 3 4 5 6 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-72036@lists.php.net to get a copy of this message | ||
Hi Tjerk,
On Mon, Feb 3, 2014 at 1:59 PM, Tjerk Meesters <tjerk.meesters@gmail.com>wrote:
> On Mon, Feb 3, 2014 at 9:13 AM, Yasuo Ohgaki <yohgaki@ohgaki.net> wrote:
>
>> Hi Tjerk,
>>
>> On Mon, Feb 3, 2014 at 8:55 AM, Tjerk Meesters <tjerk.meesters@gmail.com>wrote:
>>
>>> I think it would be good enough to have only uuid v4:
>>>
>>> function uuidv4()
>>> {
>>> $data = openssl_random_pseudo_bytes(16); // or whatever
>>>
>>> $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0010
>>> $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10
>>>
>>> return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data),
>>> 4));
>>> }
>>>
>>> It's really just a representation of random data, whereby 6 bits are
>>> used for the actual format.
>>>
>>
>> I agree.
>> UUID v4 simply generate random ID and it is good for many purposes.
>>
>> My concern is portability. OpenSSL(or Mcrypt) is provided as module.
>> Users tends not to use module functions whenever possible. To address
>> this issue, OpenSSL could be a module compiled by default.
>>
>
> You could simply choose between
php_win32_get_random_bytes()
> (Windows)
> or reading directly from /dev/xrandom. Ultimately you have to
> be prepared
> to supplement the data (partially or fully) with calls to šp!
> ’ÛŠ€î‚F¼php_rand().
>
Yes. It can be done this way.
I would like to have full UUID implementation as well as other crypt
features of OpenSSL.
I made a RFC for building OpenSSL module by default.
https://wiki.php.net/rfc/build-openssl-by-default
I'll post it in new thread later.
Regards,
--
Yasuo Ohgaki
yohgaki@ohgaki.net