我是 Xor 加密的新手,我在使用以下代码时遇到了一些问题:
function xor_this($string) {
// Let's define our key here
$key = ('magic_key');
// Our plaintext/ciphertext
$text =$string;
// Our output text
$outText = '';
// Iterate through each character
for($i=0;$i<strlen($text);)
{
for($j=0;$j<strlen($key);$j++,$i++)
{
$outText .= $text{$i} ^ $key{$j};
//echo 'i='.$i.', '.'j='.$j.', '.$outText{$i}.'<br />'; //for debugging
}
}
return $outText;
}
当我运行它时,它适用于普通字符串,如“dog”,但它仅部分适用于包含数字的字符串,如“12345”。
展示...
xor_this('dog')
='UYV'
xor_this('123')
=''
注意到xor_this( xor_this('123') )
= '123' 也很有趣,正如我所期望的那样。我很确定问题出在我对按位运算符的模糊理解中,或者可能是 PHP 处理包含数字的字符串的方式。我敢打赌那里有聪明的人确切地知道这里出了什么问题。谢谢。
编辑#1:这不是真正的“加密”。我想混淆是正确的术语,这就是我正在做的事情。我需要从用户那里传递一个包含不重要数据的代码,而他们不能轻易地篡改它。他们正在离线完成一项定时活动,并通过此代码将他们的时间提交到在线记分牌。离线活动将混淆他们的时间(以毫秒为单位)。我需要编写一个脚本来接收此代码并将其转换回包含他们时间的字符串。