使用openssl rand随机生成MAC地址的方法

这篇具有很好参考价值的文章主要介绍了使用openssl rand随机生成MAC地址的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

当我们使用虚拟网卡的时候,有时候需要为虚拟网卡配置随机的MAC地址。我们知道,网卡的MAC地址实际上是一个6字节的整型数,通常表现为用英文冒号(:)隔开的十六进制字符串(全部大写或者全部小写),如下面所示(全部小写):

8c:ec:75:ab:b7:dc

openssl rand命令可以生成一个n字节的数,我们可以使用该命令生成MAC地址。

openssl rand

openssl rand的用法

# 查看openssl rand的手册
man openssl rand
OPENSSL-RAND(1SSL)                                                  OpenSSL                                                  > OPENSSL-RAND(1SSL)

NAME
       openssl-rand - generate pseudo-random bytes

SYNOPSIS
       openssl rand [-help] [-out file] [-base64] [-hex] [-engine id] [-rand files] [-writerand file] [-provider name] [-provider-path path]
       [-propquery propq] num

DESCRIPTION
       This command generates num random bytes using a cryptographically secure pseudo random number generator (CSPRNG).

       The random bytes are generated using the RAND_bytes(3) function, which provides a security level of 256 bits, provided it managed to
       seed itself successfully from a trusted operating system entropy source.  Otherwise, the command will fail with a nonzero error code.
       For more details, see RAND_bytes(3), RAND(7), and EVP_RAND(7).

OPTIONS
       -help
           Print out a usage message.

       -out file
           Write to file instead of standard output.

       -base64
           Perform base64 encoding on the output.

       -hex
           Show the output as a hex string.

       -engine id
           See "Engine Options" in openssl(1).  This option is deprecated.

       -rand files, -writerand file
           See "Random State Options" in openssl(1) for details.

       -provider name
       -provider-path path
       -propquery propq
           See "Provider Options" in openssl(1), provider(7), and property(7).

SEE ALSO
       openssl(1), RAND_bytes(3), RAND(7), EVP_RAND(7)

HISTORY
       The -engine option was deprecated in OpenSSL 3.0.

COPYRIGHT
       Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.

       Licensed under the Apache License 2.0 (the "License").  You may not use this file except in compliance with the License.  You can obtain
       a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.

3.0.2                                                              2023-02-06                                                OPENSSL-RAND(1SSL)

阅读完openssl rand的手册,我们知道,openssl rand能生成n字节的伪随机数,n可以指定,-hex选项用于以十六进制输出这个伪随机数,所以,首先生成一个6字节数的十六进制字符串:

$ openssl rand -hex 6
14480616a8f2

下面只需要每2个字符串之间加一个英文冒号(:)就可以了,我们选择sed命令来处理:

$ openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
b1:4b:f0:6f:89:4b

这样,就生成了一个随机的MAC地址。
简单解释一下,
openssl rand -hex 6 生成一个6字节数的十六进制字符串,
中间的 | 是管道符,将生成的字符串传递给sed命令,
sed 's/\(..\)/\1:/g; s/.$//'先在每2个字符串后面加一个英文冒号(:),然后去掉末尾的英文冒号,这样就得到了一个MAC地址字符串。

下面,详细解释一下sed 's/\(..\)/\1:/g; s/.$//'的用法:
sed后面是一个单引号包裹的字符串,字符串里有2部分,分号(;)前面的s/\(..\)/\1:/g的作用是在每2个字符串后面加一个英文冒号(:),分号(;)后面的s/.$//去掉末尾的英文冒号。

  1. s/\(..\)/\1:/g

这是一个全局替换表达式,格式为: s/要替换的字符串模式/替换成的字符串/g
s substitute,替代、替换的意思
g global,全局的意思,表示符合条件的要全部替换
\(..\) 表示要匹配的字符串,\用于转义左右括号,其实就是(..),,其中,.代表非换行符的任意字符,(..)代表2个非换行字符组成的任意字符串
\1 代表符合(..)格式的第一个子字符串,\1:就是在符合条件的子字符串加上一个英文冒号(:)
所以, s/\(..\)/\1:/g指的是:在每2个字符串后面加一个英文冒号

2. s/.$//
这是一个替换表达式,格式为: s/要替换的字符串模式/替换成的字符串/,只替换第一个
. 代表非换行符的任意一个字符
$代表末尾
所以, s/.$//指的是:去掉最后一个字符文章来源地址https://www.toymoban.com/news/detail-700736.html

到了这里,关于使用openssl rand随机生成MAC地址的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • openssl研发随机数(random)生成(含源码)

    在 OpenSSL 中,随机数生成是一个非常重要的任务,用于生成密码学中的随机数,密钥和初始化向量等。在开发应用程序时,保证随机数的质量和随机性非常关键,因为弱的随机数可能导致密码学的弱点,使得应用程序容易受到攻击。 在 OpenSSL 中,你可以使用以下函数来生成随

    2024年02月08日
    浏览(50)
  • 在 Linux 系统中查找 MAC 地址的方法

    参考文章: 多种方法在Linux上找到MAC地址 引言: MAC(Media Access Control)地址是网络设备(如网卡)的唯一标识符,用于在局域网中进行通信。在 Linux 系统中,有几种方法可以查找设备的 MAC 地址。在本文中,我们将介绍两种常用的方法,帮助你在 Linux 系统中查找 MAC 地址。

    2024年02月13日
    浏览(39)
  • 电脑IPv4和物理地址(MAC)随机变化的解决方式(固定MAC地址)

    一直认为MAC地址是不会变化的,每台设备应该是固定的,但是在项目测试当中,发现Win10的最新版本和win11都具备开启随机硬件地址的功能 开启随机硬件地址时,IPv4和物理地址(MAC随机变动),如果要固定MAC地址就需要注意: 1、首先,打开“网络和Internet设置”,关闭或者开

    2024年02月15日
    浏览(42)
  • 【c++】rand()随机函数的应用(一)——rand()函数详解和实例

    c++语言中可以用rand()函数生成随机数,今天来探讨一下rand()函数的基本用法和实际应用。 本系列文章共分两讲,今天主要介绍一下伪随机数生成的原理,以及在伪随机数生成的基础上,生成随机数的技巧,下一讲主要介绍无重复随机数生成的方法和舒尔特方格数字生成的实例

    2024年02月08日
    浏览(43)
  • Android11 Wifi Mac地址设置随机或者固定分析

    本文对Android11 wifi MAC地址设置是否随机问题进行分析。 Android 8.0 开始,设备开始支持Wifi 随机MAC,说是为了安全。 很多手上也能看到Wifi 默认使用的是随机MAC地址。 但是有些情况下,需要固定MAC,比如有些OTA升级用的是Wifi MAC地址,这时候就要MAC固定。 所以有必要对设备 W

    2023年04月16日
    浏览(52)
  • hive 随机抽样 distribute by rand() sort by rand() limit n

    在分析或者处理大规模数据时,由于数据量较大时,一般只能随机抽样一部分的数据来分析,那么如何进行随机抽样呢? 下面有几种方法,目前常用的是 distribute by rand() sort by rand() limit n order by rand() : order by 是全局的,比较耗时, 只有一个reduce,是真正的随机 sort by rand()

    2023年04月23日
    浏览(63)
  • OpenSSL 生成 RootCA (根证书)并自签署证书(支持 IP 地址)

    某机房内部访问需要配置 HTTPS,网上找的一些证书教程都不是特别好,有些直接生成证书,没有根 CA 的证书导致信任不了 Ubuntu 机器,有些教程只有域名生成,没有 IP 生成,有些甚至报错。故发一个笔者在 Ubuntu 22.04 机器上测试正确可用的流程,这里使用 10.12.0.2 作为例子生

    2024年02月08日
    浏览(30)
  • C语言rand()函数产生随机数详解

    rand函数的原型: rand函数的功能: 用来产生一个随机数 rand函数的界限: stdlib.h头文件中有宏#define RAND_MAX 0x7fff,这表示rand产生一个0-0x7fff的随机数,即最大是32767的一个数 rand函数获取随机数的基础用法为: a是一个整数,返回值为0到a的随机数,包含0,但不包含a。 如果想要

    2024年02月06日
    浏览(43)
  • rand()函数与srand()函数以及随机数种子详解

    初学者大部分对这两个函数的意义都不甚了解,以及不明白为什么需要srand()函数来播种,这里会对两函数的意义进行解释,让大家明白两函数搭配的作用,并对伪随机数以及真随机数进行讲解,最后会对随机数生成的原理进行一些探讨,希望对大家的学习理解有所帮助 格式

    2024年01月25日
    浏览(46)
  • 仿真平台sumo:随机生成车流的randomTrips.py的较便捷使用方法(新手用)

    Step1:首先把需要的地图文件(…….net.xml)放入自己认为方便操作的文件夹中。 【此处我的地图文件为demo.net,我将其放在一个桌面新建的文件夹里,该文件夹叫sumo-random】 图1 Step2:打开自己当时安装sumo的所在目录,点开,进入tools文件夹,找到randomTrips.py,将其复制到图1的

    2023年04月18日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包