eme*_*his 8 php xor bitwise-operators bitwise-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;
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它适用于普通字符串,如'dog',但它只适用于包含数字的字符串,如'12345'.
展示...
xor_this('dog') ='UYV'
xor_this('123') =''
值得注意的是xor_this( xor_this('123') )='123',正如我所期望的那样.我很确定问题存在于我对位运算符的不稳定理解中,或者可能是PHP处理包含数字的字符串的方式.我敢打赌那里有一个聪明的人知道这里究竟出了什么问题.谢谢.
编辑#1:它不是真正的'加密'.我猜混淆是正确的术语,这就是我正在做的事情.我需要从用户传递包含不重要数据的代码,而不能轻易篡改它.他们正在离线完成定时活动,并通过此代码将时间提交到在线记分板.离线活动将模糊他们的时间(以毫秒为单位).我需要编写一个脚本来接收此代码并将其转回包含其时间的字符串.
eme*_*his -3
尽管有所有明智的建议,我还是以一种更简单的方式解决了这个问题:
我换了钥匙!事实证明,通过将密钥更改为更像这样的内容:
$key = 'ISINUS0478331006';
...它将生成可打印字符的混淆输出。
| 归档时间: |
|
| 查看次数: |
9169 次 |
| 最近记录: |