win*_*aed 4 php c string substr strstr
PHP是我定期使用的那种语言之一,但是当我再次开始使用它时,通常不得不关闭蜘蛛网.本周同样适用于我将一些C代码移植到PHP.这使用了大量的AES加密和SHA256散列 - 到目前为止一切正常.但是,解密的字符串以"C"形式出现 - 即以零字节后跟"垃圾"填充字节终止.
我目前使用以下内容将这些C风格的字符串"修剪"为PHP表单:
$iv = strpos( $hashsalt8, "\0");
if ($iv)
$hashsalt8 = substr( $hashsalt8, 0, $iv );
Run Code Online (Sandbox Code Playgroud)
似乎啰嗦而且应该有一个单行函数调用,但我找不到它?
注意:虽然在这种情况下"哈希盐"名称意味着我可能知道原始字符串的长度,但在一般情况下这是未知的.显然,substr()当先验已知长度时,可以使用单线解决方案.
用途strstr:
$hashsalt8 = strstr($hashsalt8, "\0", TRUE);
Run Code Online (Sandbox Code Playgroud)
为小于5.3.0版本的丑陋溶液(其中,第三个参数是不可用)使用strrev,substr和strrchr功能来代替:
$hashsalt8 = strrev(substr(strrchr(strrev($hashsalt8), "\0"), 1));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3565 次 |
| 最近记录: |