PHP中的Xor加密

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

我是怎么做到的,可能对某人有帮助……
$msg = 'say hi!';
$key = 'whatever_123';

// print,and make unprintable chars available for a link or alike.
// using $_GET,PHP will urldecode it,if it was passed urlencoded
print "obfuscated,ready for url: " . urlencode(obfuscate($msg,$key)) . "\n";
print "deObfuscated: " . obfuscate(obfuscate($msg,$key),$key);


function obfuscate($msg,$key) {
    if (empty($key)) return $msg;
    return $msg ^ str_pad('',strlen($msg),$key);
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...