PHP是我偶尔使用的一种语言,但通常在重新开始使用时需要清除灰尘。本周我正在将一些C代码移植到PHP上,这需要大量使用AES加密和SHA256哈希算法 - 到目前为止都正常工作。但是,解密后的字符串以“C”形式输出 - 即以零字节结尾,后跟“垃圾”填充字节。
我目前使用以下方法将这些C风格的字符串转换为PHP格式:
$iv = strpos( $hashsalt8, "\0");
if ($iv)
$hashsalt8 = substr( $hashsalt8, 0, $iv );
似乎有点冗长,应该有一个一行函数调用的替代方法,但我找不到它?
注意:尽管在这种情况下,“哈希盐”名称暗示我可能知道原始字符串的长度,但在一般情况下未知。当长度是先验已知的时,可以使用substr()
获得一个一行解决方案。