Skip to content

Instantly share code, notes, and snippets.

@Zegnat
Created July 5, 2013 19:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Zegnat/5936767 to your computer and use it in GitHub Desktop.
Save Zegnat/5936767 to your computer and use it in GitHub Desktop.
For secure and slow string comparisons. This helps against timing attacks on secret strings.
<?php
function slow_compare($str1, $str2, $length = null) {
$out = ($str1_len = strlen($str1 .= chr(0))) - ($str2_len = strlen($str2 .= chr(0)));
if (!is_int($length)) $length = $str1_len;
for ($i = 0; $i < $length; $i++)
$out |= ord($str1[$i % $str1_len]) ^ ord($str2[$i % $str2_len]);
return 0 === $out;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment