如何用C#[密码学]对句子进行编码
我目前正在做一个练习,我应该创建两个函数。一个用来编码句子的符号。第二个用于解码另一个句子。这就像密码学 除了函数之外,我试图用一种简单的方法编写代码 以下是步骤:如何用C#[密码学]对句子进行编码,c#,cryptography,C#,Cryptography,我目前正在做一个练习,我应该创建两个函数。一个用来编码句子的符号。第二个用于解码另一个句子。这就像密码学 除了函数之外,我试图用一种简单的方法编写代码 以下是步骤: 读取用户正在键入的内容 将收到的字符串与字母表进行比较 当字母相似时,密码的命令起作用(字母向前移动8步) 例如: String Alphabet = "abcdefghijklmnopqrstuvwxyz"; Console.WriteLine("Indiquez votre phrase à encoder:"); string
String Alphabet = "abcdefghijklmnopqrstuvwxyz";
Console.WriteLine("Indiquez votre phrase à encoder:");
string PhraseAEncoder = Console.ReadLine();
Console.WriteLine(PhraseAEncoder);
int PositionLettreFinale = 0;
for (int i = 0; i < Alphabet.Length; i++)
{
if (PhraseAEncoder[i] == Alphabet[i])
{
PositionLettreFinale = Alphabet[i + 8]; // Je récupère la position finale.
Console.WriteLine(PositionLettreFinale);
}
while (i != PositionLettreFinale)
{
i++;
Console.WriteLine(Alphabet[i]);
}
}
String Alphabet=“abcdefghijklmnopqrstuvxyz”;
WriteLine(“Indiquez-votre短语a编码器:”);
字符串phraseEncoder=Console.ReadLine();
Console.WriteLine(短语编码);
int PositionLettreFinale=0;
for(int i=0;i
它是用法语写的。但我想你可以得到它
问题:我的for是无限的,我无法得到一个结果。代码无法工作。简单的“加密”方法示例:(基于您的代码)
我在您的代码中看到两个主要问题:
PositionLettreFinale=字母表[i+8]代码>
在这里,您可以访问字母表
数组之外的元素(例如,当i
等于24时,您将访问位于第32位的元素,而该元素不存在)
同样在同一行中,您将为变量PositionLettreFinale
类型int
分配一个char
类型的值
当将char
类型的值分配给int
类型的变量时,它将根据以下条件转换为int
现在,回答你的问题
问题:我的for是无限的,我不能得到一个结果
的
不是无限的,而
是无限的
while(i!=PositionLettreFinale)
您正在将i
与十进制值char
进行比较。它们永远不会相等,因为i
的最大值为25(Alphabet.Length-1
),而positionletfinale
的最小值为“a”(97)。您是否尝试过在调试器中单步执行代码?请比较Console.WriteLine和Console.Write方法。否,我将检查调试器。另外,昨天我只演了一个角色就成功了。但是作为一个字符串,这段代码不起作用。
private static string Crypto(string PhraseAEncoder, int shift)
{
string Alphabet = "abcdefghijklmnopqrstuvwxyz";
StringBuilder result = new StringBuilder(PhraseAEncoder.Length);
foreach (char c in PhraseAEncoder)
{
int code = Alphabet.IndexOf(c);
if (code < 0)
result.Append(c);
else
{
code += shift;
if (code >= Alphabet.Length)
code %= Alphabet.Length;
else
{
while (code < 0)
code += Alphabet.Length;
}
result.Append(Alphabet[code]);
}
}
return result.ToString();
}
static void Main(string[] args)
{
Console.WriteLine("Indiquez votre phrase à encoder:");
string PhraseAEncoder = Console.ReadLine().ToLower(); // alphabet is only in lowercase
string result = Crypto(PhraseAEncoder, 8); // crypto password "8"
Console.WriteLine(result);
result = Crypto(result, -8); // crypto reverse password "-8"
Console.WriteLine(result);
if (string.Equals(result, PhraseAEncoder))
Console.WriteLine("OK");
else
Console.WriteLine("Error");
}