在 PHP 中转换这两种类型时,我遇到了问题。以下是我在 Google 上搜索到的代码:
function strToHex($string){
$hex='';
for ($i=0; $i < strlen($string); $i++){
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
function hexToStr($hex){
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2){
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
我检查了一下,当我使用XOR加密时发现了这个问题。
我有一个字符串"this is the test"
,用一个密钥进行XOR运算后,得到的结果是字符串↕↑↔§P↔§P ♫§T↕§↕
。然后,我尝试通过函数strToHex()将其转换为十六进制,得到了这些12181d15501d15500e15541215712
。接着,我用函数hexToStr()进行测试,得到的结果是↕↑↔§P↔§P♫§T↕§q
。那么,我应该怎么解决这个问题?为什么在转换这两种样式的值时会出错?
hex2bin()
和bin2hex()
吗? - जलजनक^
运算符对其进行异或运算,那么结果可能不好。也许您可以给 strToHex 另一个参数,即您想要进行异或运算的数字,并在该函数内部直接进行异或运算:$hex .= dechex(ord($string[$i]) ^ $MYKEYBYTE);
- Déjà vu