在PHP中生成虚拟mac地址的方法

zbsbpyhn  于 2022-11-28  发布在  PHP
关注(0)|答案(5)|浏览(303)

我正在工作的网络应用程序,我将需要为每个记录生成演示mac地址。将有大量的记录,我将需要演示mac地址。
那么如何使用PHP生成唯一的mac地址呢?

**注意-**我不需要确切的mac地址-我需要一些唯一的东西,如mac地址,但不是UUID。

例如-00:17:88:00:00:00

dhxwm5r4

dhxwm5r41#

echo implode(':', str_split(substr(md5(mt_rand()), 0, 12), 2));

https://eval.in/768041或不带哈希

echo implode(':', str_split(str_pad(base_convert(mt_rand(0, 0xffffff), 10, 16) . base_convert(mt_rand(0, 0xffffff), 10, 16), 12, '0'), 2));

https://eval.in/768040

qhhrdooz

qhhrdooz2#

使用faker时:

use Faker;

$faker = new Faker\Generator();
$faker->addProvider(new Faker\Provider\Internet($faker));
$mac = $faker->macAddress();
ej83mcc0

ej83mcc03#

拉吉·塞夫,
您的问题有点模糊,因为您不清楚这个唯一ID对于不同行中可能相同的数据是否是唯一的,或者它的数据对于任何行是否都是唯一的,或者为什么您真的需要一个像MAC地址一样格式的唯一ID,而不是一个递增的数字。我会使用数据库的唯一关键字字段,然后用它来生成唯一ID。
如果您不使用后端数据库,则以下内容适用:
例如,如果您有一个表,其中可能包含具有相同数据的行,则需要添加一个唯一的列-最简单的是某种类型的自动编号(例如,1、2、3、4、5等)。然后,如果您愿意,可以从该自动编号生成一个唯一的ID(例如,像mleko给出的答案)。
如果数据本身对于每一行都是唯一的,则可以从连接行值的sha中生成唯一id(即将行中的所有值连接在一起,然后对字符串执行sha1(),并根据需要进行拆分)。
就个人而言,我会去与自动编号的方法,因为你可以肯定你会得到正确的行回来!

rslzwgfq

rslzwgfq4#

您可以尝试不同的密码生成方法来生成0-F字符的(伪)随机字符串:
How to generate random password with PHP?,然后按照mleko的建议对其进行切片。
您也可以 checkout 此项目:https://github.com/BlakeGardner/php-mac-address

7qhs6swi

7qhs6swi5#

  1. MAC地址的分配在IEEE 802标准中规定。
    2.不允许使用广播MAC地址FF:FF:FF:FF:FF:FF。
    3.不允许使用多点传送MAC位址(二进制中每个第一个字节的第一个比特)XXXXXXX 1:XX:XX:XX:XX:XX。
    4.手动生成的mac地址必须在第一个字节的第二位包含1(每个第一个字节的第一位为0 -非组播,每个第一个字节的第二位为1 -非自动生成,非制造商生成)XXXXXX 10:XX:XX:XX:XX:XX。
    这样,您手动生成的mac地址必须从02+:00:00:00:00:00到02+:FF:FF:FF:FF。
    手动生成的正确MAC地址,算法速度提高7%:
    2).如果你有一个新的字符串,那么你就可以用它来表示一个新的字符串。

相关问题