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:它不是真正的’加密’.我猜混淆是正确的术语,这就是我正在做的事情.我需要传递一个包含来自用户的不重要数据的代码,而不能轻易地篡改它.他们正在离线完成定时活动,并通过此代码将时间提交到在线记分板.离线活动将模糊他们的时间(以毫秒为单位).我需要编写一个脚本来接收此代码并将其转回包含其时间的字符串.