gpt4 book ai didi

php - PHP 中的 Xor 加密

转载 作者:可可西里 更新时间:2023-11-01 12:35:07 26 4
gpt4 key购买 nike

我是 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);
}

关于php - PHP 中的 Xor 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7548667/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com