我正在製作一個密碼解密/加密控制檯應用程序。爲用戶提供從文件系統中選擇'.txt'的選項
我想要做的是給用戶選擇從文件系統中選擇.txt文件或鍵入到控制檯窗口。我知道如何讀/寫/保存'.txt'等,但我有點不確定實現它的最佳方式。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Application
{
class Caesar
{
static void Main(string[] args)
{
try{
Console.WriteLine("Enter Key:");
int k = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("What would you like to do?");
Console.WriteLine("");
Console.WriteLine("[E] Encrypt");
Console.WriteLine("[D] Decrypt");
string choice =Convert.ToString(Console.ReadLine()).ToUpper();
// WOULD LIKE TO GIVE THE USER THE CHOICE BETWEEN TYPING OR ADDING A .TXT FILE FROM THE FILSYSTEM
switch (choice)
{
case "E": Console.Write("Enter Plain Text:");
string pt = Console.ReadLine();
caesar_cipher(k, pt);
break;
case "D": Console.Write("Type CipherText :");
string ct = Console.ReadLine();
caesar_decipher(k, ct);
break;
default: Console.WriteLine("You've entered an incorrect option!");
break;
}
}
catch(Exception)
{
Console.WriteLine ("The value you entered is incorrect");
Console.WriteLine ("Press any key to try again");
Console.ReadKey();
}
}
static void caesar_cipher(int key, string pt)
{
int size = pt.Length;
char[] value = new char[size];
char[] cipher = new char[size];
for (int r = 0; r < size; r++)
{
value[r] = Convert.ToChar(pt.Substring(r, 1));
}
for (int re = 0; re < size; re++)
{
int count = 0;
int a = Convert.ToInt32(value[re]);
for (int y = 1; y <= key; y++)
{
if (count == 0)
{
if (a == 90)
{ a = 64; }
else if (a == 122)
{ a = 96; }
cipher[re] = Convert.ToChar(a + y);
count++;
}
else
{
int b = Convert.ToInt32(cipher[re]);
if (b == 90)
{ b = 64; }
else if (b == 122)
{ b = 96; }
cipher[re] = Convert.ToChar(b + 1);
}
}
}
string ciphertext = "";
for (int p = 0; p < size; p++)
{
ciphertext = ciphertext + cipher[p].ToString();
}
Console.WriteLine("Cipher Text=");
Console.WriteLine(ciphertext.ToUpper());
}
static void caesar_decipher(int key, string ct)
{
int size = ct.Length;
char[] value = new char[size];
char[] cipher = new char[size];
for (int r = 0; r < size; r++)
{
cipher[r] = Convert.ToChar(ct.Substring(r, 1));
}
for (int re = 0; re < size; re++)
{
int count = 0;
int a = Convert.ToInt32(cipher[re]);
for (int y = 1; y <= key; y++)
{
if (count == 0)
{
if (a == 65)
{ a = 91; }
else if (a == 97)
{ a = 123; }
value[re] = Convert.ToChar(a - y);
count++;
}
else
{
int b = Convert.ToInt32(value[re]);
if (b == 65)
{ b = 91; }
else if (b == 97)
{ b = 123; }
value[re] = Convert.ToChar(b - 1);
}
}
}
string plaintext = "";
for (int p = 0; p < size; p++)
{
plaintext = plaintext + value[p].ToString();
}
Console.WriteLine("Plain Text=");
Console.WriteLine(plaintext.ToLower());
Console.ReadKey();
}
}
}