验证凯撒密码,并输入明文实现单表代码密码,密钥为I MISS YOU SO MUCH
using System;
using System.Collections.Generic;
using System.Text;
namespace Fan
{
class Program
{
static void Main(string[] args)
{
string m = "abcdefghijklmnopqrstuvwxyz";
char[] zimu = m.ToCharArray();
List<char> yuanbiao = new List<char>();
Console.WriteLine(" 置换表:");
for (int i = 0; i < zimu.Length; i++)
{
yuanbiao.Add(zimu[i]);
Console.Write(zimu[i] + " ");
}
Console.WriteLine();
//代换表
List<char> listString = daihuanbiao();
foreach (char eachString in listString)
{
Console.Write(eachString + " ");
}
Console.WriteLine();
Console.Write("请输入要置换的明文:");
string mingwen =Console.ReadLine();
char[] ming = mingwen.Trim().ToCharArray();
List<char> miwen = new List<char>();
Console.Write("密文:");
for (int i = 0; i < ming.Length;i++ )
{
int num = yuanbiao.IndexOf(ming[i]);
Console.Write(listString[num]+ " ");
}
Console.ReadKey();
}
private static List<char> daihuanbiao()
{
//密钥
char[] stringArray = { 'i', 'm', 'i', 's', 's', 'y', 'o', 'u' };
//26字母表
string m = "abcdefghijklmnopqrstuvwxyz";
char[] zimu = m.ToCharArray();
List<char> listString = new List<char>();
//获取删除相同字母的密钥
List<char> Array = Delete(stringArray);
//列表中添加密钥
for (int i = 0; i < Array.Count; i++)
{
if (!listString.Contains(Array[i]))
listString.Add(Array[i]);
}
//列表中添加剩余26字母
for (int i = 0; i < zimu.Length; i++)
{
if (!listString.Contains(zimu[i]))
listString.Add(zimu[i]);
}
return listString;
}
private static List<char> Delete(char[] stringArray)
{
//List用于存储从数组里取出来的不相同的元素
List<char> listString = new List<char>();
foreach (char eachString in stringArray)
{
if (!listString.Contains(eachString))
listString.Add(eachString);
}
return listString;
}
}
}