测试XXTea算法,网上没有一个php版本能还原我的字符串,太奇葩了。
程序员文章站
2022-06-13 16:57:17
...
Xxtea Xxtea算法 原文="你是我的,sdfsdfsdfasd,error\4&:1234/?.,\3&%$#@@";
还原过的 =你是我的,sdfsdfsdfasd,error&:1234/?.,&%$#@@;
只要遇到 \3,就不行。还有个别的\4,5,6,7,8,9,有的能还原,有的不能。
网上的所有php版本的XXTea算法基本都测试过,全是同样的问题,很奇怪。有高手吗指点一二?
附一个php版本的xxtea算法代码,其他版本的也存在同样的问题。
你是我的,sdfsdfsdfasd,error&:1234/?.,&%$#@@
你是我的,sdfsdfsdfasd,error&:1234/?.,&%$#@@
bool(true)
你是我的,sdfsdfsdfasd,error\4&:1234/?.,\3&%$#@@
你是我的,sdfsdfsdfasd,error\4&:1234/?.,\3&%$#@@
bool(true)
还原过的 =你是我的,sdfsdfsdfasd,error&:1234/?.,&%$#@@;
只要遇到 \3,就不行。还有个别的\4,5,6,7,8,9,有的能还原,有的不能。
网上的所有php版本的XXTea算法基本都测试过,全是同样的问题,很奇怪。有高手吗指点一二?
$n)) return false; $n = $m; } $s = array (); for ($i = 0; $i = 2147483648) $n -= 4294967296; while ($n > 2 & 3; for ($p = 0; $p > 5 & 0x07ffffff) ^ $y > 3 & 0x1fffffff) ^ $z > 5 & 0x07ffffff) ^ $y > 3 & 0x1fffffff) ^ $z > 2 & 3; for ($p = $n; $p > 0; $p--) { $z = $v[$p -1]; $mx = self :: int32((($z >> 5 & 0x07ffffff) ^ $y > 3 & 0x1fffffff) ^ $z > 5 & 0x07ffffff) ^ $y > 3 & 0x1fffffff) ^ $z
附一个php版本的xxtea算法代码,其他版本的也存在同样的问题。
回复讨论(解决方案)
是否被转义了?
不就是个平衡加密么?只要加密、解密后与原文相同不就是对了吗?
echo $s = "你是我的,sdfsdfsdfasd,error\4&:1234/?.,\3&%$#@@", '
';echo $t = @Xxtea::decrypt(@xxtea::encrypt($s)), '
';var_dump($t == $s);echo '';echo $s = '你是我的,sdfsdfsdfasd,error\4&:1234/?.,\3&%$#@@', '
';echo $t = @Xxtea::decrypt(@xxtea::encrypt($s)), '
';var_dump($t == $s);
你是我的,sdfsdfsdfasd,error&:1234/?.,&%$#@@
你是我的,sdfsdfsdfasd,error&:1234/?.,&%$#@@
bool(true)
你是我的,sdfsdfsdfasd,error\4&:1234/?.,\3&%$#@@
你是我的,sdfsdfsdfasd,error\4&:1234/?.,\3&%$#@@
bool(true)
\4是特殊字符,显示不出来正常
上一篇: php继承的一个应用_PHP教程
下一篇: 让两个ORACLE数据库和平共处