php是我周期性使用的语言之一,但当我再次使用它时,通常必须清除蛛网。这周同样适用,同时我将一些c代码移植到php。这使用了很多aes加密和sha256散列-到目前为止一切正常。但是,解密字符串以“c”形式出现,即以零字节结尾,后跟“垃圾”填充字节。
目前,我将这些c样式字符串“修剪”为php格式,如下所示:
$iv = strpos( $hashsalt8, "\0");
if ($iv)
$hashsalt8 = substr( $hashsalt8, 0, $iv );
似乎很冗长,应该有一个单行函数调用,但我找不到它?
注意:尽管在本例中“hash salt”名称意味着我可能知道原始字符串的长度,但在一般情况下这是未知的。显然,当长度是先验的时,使用
substr()
可以得到一个单线解。 最佳答案
使用strstr
$hashsalt8 = strstr($hashsalt8, "\0", TRUE);
对于低于5.3.0版本(第三个参数不可用)的更丑陋的解决方案使用
strrev
、substr
和strrchr
函数:$hashsalt8 = strrev(substr(strrchr(strrev($hashsalt8), "\0"), 1));