PHP Conference Japan 2024

sodium_memcmp

(PHP 7 >= 7.2.0, PHP 8)

sodium_memcmp以恒定时间测试相等性

描述

sodium_memcmp(#[\SensitiveParameter] string $string1, #[\SensitiveParameter] string $string2): int

以恒定时间比较两个字符串。

实际上,你几乎总是想使用 hash_equals(),因为它提供相同的逻辑,但返回 bool 而不是 int。但是,如果你在时间敏感的计算中使用比较的返回值,并且担心 bool 到 int 转换的计时泄漏,sodium_memcmp() 是理想的替代方案。

参数

string1

要比较的字符串

string2

另一个要比较的字符串

返回值

如果两个字符串相等,则返回 0;否则返回 -1

添加注释

用户贡献的注释 1 条注释

-1
divinity76 at gmail dot com
5 年前
在我看来,此函数与 hash_equals() 函数的功能相同。hash_equals() 与哈希实际上没有任何关系,它只是一个恒定时间的字符串相等性检查函数,显然与 sodium_memcmp() 一样。
To Top