在 PHP 中生成单次使用令牌:random_bytes 还是 openssl_random_pseudo_bytes?

2024-02-13

我需要在 PHP 中生成一次性令牌。我可以使用两个函数来完成同样的事情:随机字节 http://php.net/random-bytes and openssl_random_pseudo_bytes http://php.net/openssl_random_pseudo_bytes。例如,使用random_bytes:

var_dump(bin2hex(random_bytes(12)));

--> string(24) "338f489ec37a2c2b4943905d"

并使用openssl_random_pseudo_bytes:

var_dump(bin2hex(openssl_random_pseudo_bytes(12)));

--> string(24) "1c7febea20029bd524fba8e7"

openssl_random_pseudo_bytesPHP 5.3 及更高版本(所以我认为它已经存在了更长时间),并且random_bytes是 PHP 7。我正在使用 PHP 7,所以我可以使用其中任何一个。

那么两者之间有什么主要(或次要)区别吗?如果没有,我很想和random_bytes只是因为它有一个更简单的名称(=更容易阅读的代码)。


openssl_random_pseudo_bytes是 OpenSSL 扩展的一部分,必须明确说明配置并包含 http://php.net/manual/en/openssl.setup.php在PHP编译过程中,需要外部依赖。

random_bytes是 PHP 7 中的新增内容,作为生成随机字节的本机始终可用的 PHP 方法,该方法根据其所在的平台选择其内部随机源。

引入的主要原因random_bytes问题是,在 PHP 中生成伪随机数据总是有点令人头疼,这要求开发人员具有平台意识,并且可能根据可用的扩展或系统级函数使用几种不同的后备方法。这通常会导致个别实现中出现错误,这在安全相关代码中尤其令人担忧。random_bytes通过提供一个始终可用的函数并使用可用的最佳随机源来简化这一过程。如果您可以专门针对 PHP 7+,那么它应该是您的首选方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PHP 中生成单次使用令牌:random_bytes 还是 openssl_random_pseudo_bytes? 的相关文章

  • MVC和依赖注入,被迫使用单例Controller?

    我正在致力于构建一个根据 MVC 原则运行并利用依赖注入的 PHP 框架 我想我已经把前端控制器部分放下了 有一个工作路由器实例化控制器实例并根据请求的 URI 调用适当的操作 接下来是依赖注入 我想实现一个使用反射解决依赖关系的容器 这样
  • 在 JQuery ui 自动完成中显示图像

    我有一个带有 JQuery ui 自动完成功能的脚本 可以完美运行 有一个显示用户名字和姓氏的搜索过程 但在我的数据库中 还有用户的图片 我想将其显示在带有名字和姓氏的建议中 数据库中pic包含图片url 剧本 function searc
  • 在 wampserver 2.2 上安装 php_imagick.dll PHP 扩展

    我使用的是 32 位操作系统的 Windows 7 我安装了 ImageMagick 6 8 7 Q16Link https www imagemagick org script download php windows我能够从命令行 转换
  • 在 PHP 中设置 HTTP 响应代码(在 Apache 下)

    给出以下两种在 PHP 中设置 HTTP 响应代码的方法 具体来说 在 Apache 下 方法一 http response code 404 方法二 header HTTP 1 0 404 Not Found 我的问题是 除了这个事实之外
  • 纯旧 PHP 对象 (POPO) 一词的确切含义是什么?

    我想了解一下波波 我搜索了 popo 发现它代表 Plain Old Php Object 但我不确定 Plain Old Php Object 的确切含义 我想知道什么是 popo 以及在哪里使用它 谢谢 普通旧 在此处插入语言 对象是一
  • 安装 OCI8:如何纠正“使用未定义常量 OCI_COMMIT_ON_SUCCESS”错误?

    我正在尝试在 RedHat 服务器 RHEL7 上为我的 Apache 服务器安装 OCI8 此时 当我尝试使用 Symphony 连接到我的服务器时 出现以下错误 异常 ErrorException 使用未定义的常量 OCI COMMIT
  • 是否可以在 PHP 中使用 file_get_contents 来破坏 CSRF 令牌验证

    在每个会话的表单上使用令牌的 CSRF 预防方法是一种流行的方法 但是 我不明白这种令牌方式如何保护file get contentsPHP 可以获取跨域文件表单的内容 gt 它可以获取表单上的令牌并使用它 那么这种token方式是如何运作
  • Composer 安装要求

    我正在尝试将 Composer 安装到 Laravel 项目中 当我做的时候sudo composer install在项目目录中它显示了两个错误 Problem 1 Installation request for simplesoftw
  • 使用控制器通过 codeigniter 处理返回的自定义 css 和 javascript 文件

    我正在开发一个 php codeigniter 项目 我正在考虑创建一个专门用于处理返回自定义 css 和 javascript 文件的控制器 在之前的项目中 我在视图文件的标头中包含了外部 CSS 和 JS 文件 但它们本质上必须是静态的
  • 如何在Python中计算输出的均值、众数、方差、标准差等?

    我有一个基于概率的简单游戏 每天我们抛一枚硬币 如果正面朝上 我们就赢了 我们会得到 20 美元 如果我们抛硬币 反面朝上 那么我们会在月底损失 19 美元 28 天 我们可以看到我们失去或赚了多少 def coin tossing gam
  • 如何使用 AJAX/jQuery 显示打印内容?

    所以我试图理解整个 AJAX jQuery 的事情 现在 当我单独运行这个 PHP 脚本时 我必须等待并观察轮子旋转 直到循环完成然后加载 while row mysql fetch array res postcode to storm
  • 使用 Mock 对 Laravel 5 Mail 进行单元测试

    有没有办法在 Laravel 5 中测试 Mail 尝试了我在互联网上看到的唯一合法的模拟示例 但它似乎只适用于 Laravel 4 下面的当前代码 mock Mockery mock Swift Mailer this gt app ma
  • 如何解决 注意:未定义索引:第 21 行 C:\xampp\htdocs\invmgt\manufactured_goods\change.php 中的 id [重复]

    这个问题在这里已经有答案了 我的 PHP 代码有一个问题 显示 注意 未定义的索引 我确信它非常简单 因为我是初学者 所以我不太清楚到底出了什么问题 所以请帮助我 这是代码
  • 优化数据可视化 Web 应用程序的性能

    我正在重写 3 年前编写的数据可视化网络工具 从那时起 浏览器的 JavaScript 引擎变得更快 所以我正在考虑将部分工作从服务器转移到客户端 在页面上 数据在表格和地图 或图表 中可视化 它使用相同的数据 但以不同的方式 因此准备显示
  • 从 PHP 生成渐变颜色

    我想知道如何构建一个给出颜色代码和 显示该颜色的渐变 例如 function generate color int colorindex Generate 10 pale colors of this color 请帮我 迈克尔引用的代码相
  • PHP括号少IF条件不接受多个语句

    我从来都不喜欢控制结构中的括号 直到今天我才意识到它如何只接受括号内的一条语句而不是 if 条件 如果我有多个语句 它会抛出语法错误 这是 PHP 的工作方式还是我的 IDE 有问题 显然错误很明显 但我只是想确保这是正常的 如果您有任何其
  • Apache 虚拟主机始终重定向到 /dashboard

    我遇到的问题似乎是一个常见问题 但我找到的任何解决方案似乎都不适合我的情况 我正在尝试设置一个虚拟主机 以便我可以通过 mytestdomain local 访问我的 Laravel 安装的公共文件 但是当我在 google chrome
  • 在常数空间中创建 1..N 的随机排列

    我正在寻找枚举固定空间中数字 1 N 的随机排列 这意味着我无法将所有数字存储在列表中 原因是 N 可能非常大 超过可用内存 我仍然希望能够一次遍历这样一个数字的排列 只访问每个数字一次 我知道对于某些 N 可以这样做 许多随机数生成器随机
  • 线性同余生成器 - 如何选择种子和统计检验

    我需要做一个线性同余生成器 它将成功通过所选的统计测试 我的问题是 如何正确选择发电机的数字以及 我应该选择哪些统计检验 我想 均匀性的卡方频率测试 每代收集10 000个号码的方法 将 0 1 细分为10个相等的细分 柯尔莫哥洛夫 斯米尔
  • Monolog,如何将 PHP 数组记录到控制台?

    我正在使用浏览器处理程序将消息记录到 JS 控制台 require once vendor autoload php use Monolog Logger use Monolog Handler BrowserConsoleHandler

随机推荐

  • RankNTypes 与类型别名混淆[重复]

    这个问题在这里已经有答案了 我试图了解类型约束如何与类型别名一起使用 首先 假设我有下一个类型别名 type NumList a Num a gt a 我有下一个功能 addFirst a gt NumList a gt NumList a
  • 从浏览器捕获系统声音

    我正在尝试构建一个 Web 应用程序 从 webrtc 调用捕获本地和远程音频 但我无法录制远程音频 使用 recordRTC 我想知道是否可以以某种方式捕获系统声音 有没有办法从浏览器捕获系统声音 不仅仅是麦克风 也许是一个扩展 在 Ch
  • PHP中如何计算对角线差?

    我有一个N N矩阵 现在我想知道这个矩阵的对角线差异 这个解决方案的最佳方法是什么 我正在尝试使用给定的方法 就这样3 3矩阵说它是 11 15 85 66 72 21 14 21 47 对角线简单公式为 firstD 11 72 47 1
  • VC++ 2010 include/lib 路径

    VC2010 Express 中是否有地方可以为所有项目设置头文件和库路径 当我设置它们时 它们似乎只适用于单个项目 例如 我每次启动新项目时都必须设置它们 我认为你可以为此设置环境变量 INCLUDE 和 LIBPATH 不知道如何从 G
  • 使用 cordova for android 构建会创建错误的版本代码

    运行命令cordova build release android生成版本代码为 70 的 apk 在 config xml 文件中 对于小部件我将其设置为
  • 如何检测 Firefox 中的浏览器关闭事件?

    如何在 Firefox 浏览器中检测浏览器关闭事件 我想在服务器端进行一些清理过程 并维护上次注销时间 为了实现这一点 需要在用户单击注销或关闭浏览器时触发 ajax 调用 对于 IE 以下代码有效 if window event clie
  • 带有 的多行

    代码笔 https codesandbox io s 94lw648lmo fontsize 14 https codesandbox io s 94lw648lmo fontsize 14 我一直在使用 Material ui 和 Rea
  • 如何删除目录中X个文件

    要获取目录中的 X 个文件 我可以这样做 ls U head 40000 那么我该如何删除这 40 000 个文件呢 例如 类似 rm rf ls U head 40000 您需要的工具是xargs 它将标准输入转换为您指定的命令的参数 输
  • 如何为 EF5 导航属性指定列名称

    我首先使用 EF5 代码来生成数据库架构 但我的新导航属性在表中以不合需要的方式命名 这是我正在使用的模型 public class User Key public long UserId get set public virtual IC
  • CSS - 使用滤镜为黑白 PNG 图像添加颜色

    CSS 中是否可以使用滤镜为黑白图像添加颜色 我说的是像 Photoshop 中那样使用过滤器 更好的例子是 Microsoft PowerPoint 中的过滤器 我想做的是 我有一个黑色图标的图像文件 我想为其添加一个过滤器 以便图像中的
  • 具有实体框架的 WCF DataService:TimeSpan 支持

    我正在尝试在公开许多 System TimeSpan 属性的实体框架对象上下文上创建 WCF 数据服务 但是 当我尝试访问该服务时 出现以下错误 DepotRoute 类型上的属性 ScheduledDepartureTime 属于 Tim
  • 如何用科学记数法格式化数字

    所以基本上我有这个返回的函数 3 00000000000E000 function lang extended begin wynik 0 counter 1 temp 1 input 2 for i 1 to 4 do begin for
  • XSLT 1.0 杂乱清理

    我正在以反向字体 黑色背景 白色文本 打印一行 分布在收据带的宽度上 41 个字符 我有功能代码 但我想知道是否有更好的方法来做到这一点 这是我现有的代码
  • 为 Android 编写实时 opengl-es 游戏 - 一些问题(优化)

    1 游戏中的计时 有没有办法使用其他的System Currentmillis starttime gt XX更新游戏中的任何内容 安全还是CPU贵 2 在我的游戏中 我有 20 个项目 移动方形顶点 当它达到 60 70 顶点时 FPS
  • 安装应用程序时出现错误消息 - INSTALL FAILED NO MATCHING ABIS [重复]

    这个问题在这里已经有答案了 我尝试通过安装该应用程序ADB使用终端 但失败并显示如下错误消息 INSTALL FAILED NO MATCHING ABIS INSTALL FAILED NO MATCHING ABIS 当您尝试安装具有本
  • 即使在project.json中将allowunsafe标志设置为true后,.NET Core中也会出现不安全代码编译错误

    我在 NET Core 应用程序中使用了一些不安全的代码 为此 我在项目 json file compilationOptions allowUnsafe true 但是 我仍然收到错误CS0227 Unsafe code may only
  • 在 Xcode 中,有没有办法在调用 NSLog 时禁用调试器控制台中显示的时间戳?

    Xcode 的调试器控制台可以轻松查看我的应用程序发送的任何调试消息NSLog 但它总是在它们上面贴上时间戳前缀 2009 08 30 04 54 48 128 MyApp 94652 a0f some log message 2009 0
  • Microsoft Office 2010 使用什么算法进行加密?

    它是否使用标准 AES 128 位密钥进行加密 我在Google上搜索了很多 但仍然没有找到用于加密的算法 我正在加密 PowerPoint 文件 This 技术网文章 http technet microsoft com en us li
  • mvn install 与 jar:jar

    mvn install 命令与使用 jar jar 插件有什么区别 很明显 install 似乎构建了一个 jar 因此 我想知道对 jar jar 插件的需求是什么 您可以在 Maven 命令行上指定两种类型的内容 生命周期阶段 这些不包
  • 在 PHP 中生成单次使用令牌:random_bytes 还是 openssl_random_pseudo_bytes?

    我需要在 PHP 中生成一次性令牌 我可以使用两个函数来完成同样的事情 随机字节 http php net random bytes and openssl random pseudo bytes http php net openssl