PHP中的Xor加密

前端之家收集整理的这篇文章主要介绍了PHP中的Xor加密前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Xor加密的新手,我在使用以下代码时遇到了一些问题:
  1. function xor_this($string) {
  2.  
  3. // Let's define our key here
  4. $key = ('magic_key');
  5.  
  6. // Our plaintext/ciphertext
  7. $text =$string;
  8.  
  9. // Our output text
  10. $outText = '';
  11.  
  12. // Iterate through each character
  13. for($i=0;$i<strlen($text);)
  14. {
  15. for($j=0;$j<strlen($key);$j++,$i++)
  16. {
  17. $outText .= $text{$i} ^ $key{$j};
  18. //echo 'i='.$i.','.'j='.$j.','.$outText{$i}.'<br />'; //for debugging
  19. }
  20. }
  21. return $outText;
  22. }

当我运行它时,它适用于普通字符串,如’dog’,但它只适用于包含数字的字符串,如’12345′.

展示…

xor_this(‘dog’)=’UYV’

xor_this(‘123’)=”

值得注意的是xor_this(xor_this(‘123′))=’123’,正如我所期望的那样.我很确定问题存在于我对位运算符的不稳定理解中,或者可能是PHP处理包含数字的字符串的方式.我打赌那里有一个聪明的人知道这里到底有什么不对.谢谢.

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

我是怎么做到的,可能对某人有帮助……
  1. $msg = 'say hi!';
  2. $key = 'whatever_123';
  3.  
  4. // print,and make unprintable chars available for a link or alike.
  5. // using $_GET,PHP will urldecode it,if it was passed urlencoded
  6. print "obfuscated,ready for url: " . urlencode(obfuscate($msg,$key)) . "\n";
  7. print "deObfuscated: " . obfuscate(obfuscate($msg,$key),$key);
  8.  
  9.  
  10. function obfuscate($msg,$key) {
  11. if (empty($key)) return $msg;
  12. return $msg ^ str_pad('',strlen($msg),$key);
  13. }

猜你在找的PHP相关文章