在 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? 的相关文章

  • 检测 JPEG 图像质量

    我允许用户上传图像 但是 我希望保持 JPEG 质量不超过 90 我打算做的是检测当前的质量 如果低于 90 什么都不做 如果超过90 则使用Image Magick将图像重新压缩到90 可以这样做吗 我更喜欢 PHP 但任何语言都会有帮助
  • 我需要一个实时网站来测试 Facebook Connect 吗?

    我正在尝试将 facebook connect 与 nmy 社交网站集成 目前用户在我的网站上使用自己的帐户创建和登录 但我希望允许用户基本上在我的网站上创建一个新帐户 但使用 facebook connect 登录 我我认为在我的网站上这
  • PHP 中的 Europe/London 和 UTC 有区别吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我知道 UTC 和 GMT 实际上是
  • PHP 和 MySQL - 高效处理多个一对多关系

    我正在寻求一些有关使用 MySQL 和 PHP 检索和显示数据的最佳方法的建议 我有 3 个表 所有一对多关系如下 Each SCHEDULE有很多覆盖每个覆盖都有很多地点 我想检索这些数据 以便它可以全部显示在单个 PHP 页面上 例如列
  • PHP设置全局环境变量的方法

    我已阅读问题 答案here https stackoverflow com questions 13568191 how to get system environment variables into php while running
  • 在 Laravel 中将自定义/新类文件放在哪里?

    我有关于如何使用 Yelp Fusion API 的 PHP 示例 它用OAuth php file https github com Yelp yelp api blob master v2 php lib OAuth php有几个班级
  • 在 Windows 中使用 PHP 创建受密码保护的 Zip 文件

    我正在 PHP 中创建给定文件的 zip 文件 下面是函数 function create zip file file name zip new ZipArchive zip name file name zip Zip name zip
  • yii2 无线电内联 Html 帮助器

    我在 yii2 中有这个 radioList Html radioList abc null new class gt form control input sm 它生成这个 div class radio 但我想要 div class r
  • PHP—array_merge_recursive() - 相同键没有数组

    php a php gt data1 tag gt div classes gt 1 2 3 php gt data2 tag gt section classes gt 2 3 4 5 6 php gt result array merg
  • 在我的 php 网络服务器内副本中启用 mysqli

    正如这里所讨论的 mysqli 直接运行时有效 但通过 js ajax 运行时无效 https stackoverflow com questions 31523601 mysqli works when run directly but
  • Laravel 验证规则仅针对字母

    我正在尝试添加验证规则以仅接受信件 我正在使用regex规则 但它仍然不起作用 下面是我的代码 Validate request input this gt validate request name gt required regex p
  • 如何将 WordPress 类别选择限制为只有一个?

    我有一个自定义帖子类型和一个自定义分类设置 非常标准的东西 但是 我想知道如何限制我的客户在每个帖子中选择多个分类类别 我不介意他们能够创建和删除分类类型 但我不希望他们选择多个分类类型 因为这些是复选框 所以它们可以 也许单选按钮可以工作
  • rand() 播种与 time() 问题

    我很难弄清楚如何使用 rand 并使用 Xcode 用 time 为其播种 我想生成 0 到 1 之间的随机十进制数 该代码为我提供了元素 1 和 2 看似随机的数字 但元素 0 始终在 0 077 左右 有什么想法吗 我的代码是 incl
  • 如何使用 jQuery 通过 Ajax 发送复选框数组的值?

    我有一个包含很多表单字段的表单 12 x n 行 每行中的第一个字段 代表产品 是一个类似于以下内容的复选框
  • 添加 current_page_item 类

    我正在研究 WordPress 设计 我想创建一个自定义菜单 items wp get nav menu items Menu array order gt ASC orderby gt menu order post type gt na
  • Paypal IPN 发送“待处理”并以“多币种”为理由?

    我正在使用 Paypal IPN 从我的网站收款 该网站目前仅处于开发阶段 因此我建立了一个沙盒网站进行测试 并且我已经通过在英国注册的测试帐户非常成功地以英镑货币 我的居住国货币 进行付款 但是 我希望该网站能够检测访问者的原籍国并允许他
  • 递归获取数组的键并创建下划线分隔的字符串

    现在我得到了一个包含某种信息的数组 我需要从中创建一个表 例如 Student Address StreetAddress gt Some Street StreetName gt Some Name Marks1 gt 100 Marks
  • 如何使用 PHP 正确添加跨站请求伪造 (CSRF) 令牌

    我正在尝试为我网站上的表单添加一些安全性 其中一个表单使用 AJAX 另一个表单是简单的 联系我们 表单 我正在尝试添加 CSRF 令牌 我遇到的问题是令牌有时只显示在 HTML 值 中 其余时间 该值为空 这是我在 AJAX 表单上使用的
  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE

随机推荐

  • 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