PHP 是我定期使用的那些语言之一,但当我再次开始使用它时,通常不得不把蜘蛛网弄掉。本周我将一些 C 代码移植到 PHP 时也是如此。这使用了大量的 AES 加密和 SHA256 散列 - 到目前为止一切正常。然而,解密后的字符串以“C”形式出现——即以零字节结尾,后跟“垃圾”填充字节。
我目前使用以下内容将这些 C 风格的字符串“修剪”为 PHP 形式:
$iv = strpos( $hashsalt8, "\0");
if ($iv)
$hashsalt8 = substr( $hashsalt8, 0, $iv );
似乎冗长,应该有一个单行函数调用,但我找不到它?
注意:虽然在这种情况下,“哈希盐”名称暗示我可能知道原始字符串的长度,但这在一般情况下是未知的。substr()
显然,当先验已知长度时,可以使用单行解决方案。