hash_equals
Timing attack safe string comparison.
Description
Compares two strings using the same time whether they're equal or not.
This function was added in PHP 5.6.
Note: It can leak the length of a string when arguments of differing length are supplied.
Parameters (2)
- 0. $a (string)
- Expected string.
- 1. $b (string)
- Actual, user supplied, string.
Usage
if ( !function_exists( 'hash_equals' ) ) { require_once ABSPATH . WPINC . '/compat.php'; } // Expected string. $a = ''; // Actual, user supplied, string. $b = ''; // NOTICE! Understand what this does before running. $result = hash_equals($a, $b);
Defined (1)
The function is defined in the following location(s).
- /wp-includes/compat.php
- function hash_equals( $a, $b ) {
- $a_length = strlen( $a );
- if ( $a_length !== strlen( $b ) ) {
- return false;
- }
- $result = 0;
- // Do not attempt to "optimize" this.
- for ( $i = 0; $i < $a_length; $i++ ) {
- $result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] );
- }
- return $result === 0;
- }