【发布时间】:2020-01-17 04:16:06
【问题描述】:
我需要在 PHP 中编写一个函数,它输出的结果与下面的 C# 中的相同。
C#
public void Criptami()
{
szEncryptionKey = 200;
szPlainText = input.text;
StringBuilder szInputStringBuild = new StringBuilder(szPlainText);
StringBuilder szOutStringBuild = new StringBuilder(szPlainText.Length);
char Textch;
for (int iCount = 0; iCount < szPlainText.Length; iCount++)
{
Textch = szInputStringBuild[iCount];
Textch = (char)(Textch ^ szEncryptionKey);
szOutStringBuild.Append(Textch);
}
Debug.Log(szOutStringBuild.ToString());
}
现在我已经尝试使用我在 Stackoverflow (Encrypt/decrypt with XOR in PHP) 上的另一个讨论中找到的函数,但是输入相同,最终输出不同。
function xor_this($string) {
// Let's define our key here
$key = (200);
// 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) && $i<strlen($text)); $j++,$i++)
{
$outText .= $text{$i} ^ $key{$j};
//echo 'i=' . $i . ', ' . 'j=' . $j . ', ' . $outText{$i} . '<br />'; // For debugging
}
}
return $outText;
}
我得到了 C# 中的一段代码,但就我所能收集到的信息而言 - 尽管我对 C# 的了解几乎不存在 - 在我看来它应该以完全相同的方式运行吗?
感谢您的宝贵时间!
编辑:我添加了输入和输出值
PHP 输入: ciao 输出:QYQ]
C# 输入: ciao 输出:«¡©§
【问题讨论】:
-
您能否提供一个用于测试的示例输入以及您期望的输出(不是每个人都可以使用 C#)。
-
我不是 PHP 专家,但你为什么要遍历
strlen的$key? -
@NigelRen 但是每个人(至少如果你在这个网站上)都可以访问互联网:dotnetfiddle.net 所以你可以运行它
-
@MindSwipe,作为提出任何问题的一部分——您应该提供MCVE,这意味着包括有关您使用什么作为输入以及您期望什么作为输出的相关信息——以及哪里错了。
-
我已经在 PHP 和 C# 中添加了输入和输出作为 OP 的编辑。