commit 812e525a9909d67e4a360dae934a3f8f3f749f08
parent 37a65ac1f9e96dfe801a8952609b844fd09fa280
Author: Minerva_juppiter <94231606+minerva-jupiter@users.noreply.github.com>
Date: Sat, 25 Jun 2022 00:00:47 +0900
Diffstat:
| A | Encrypt.cs | | | 160 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| M | Program.cs | | | 191 | +++---------------------------------------------------------------------------- |
| A | test.cs | | | 67 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
3 files changed, 233 insertions(+), 185 deletions(-)
diff --git a/Encrypt.cs b/Encrypt.cs
@@ -0,0 +1,160 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Cypher
+{
+ internal class Encrypt
+ {
+ public void encrypt()
+ {
+ //暗号化
+
+ //変数宣言
+ int[] order = new int[100];
+ string written;
+ string[] date = new string[100];
+ int quotient; //商
+ int amari = 0; //あまり
+ int inNumber = 0; //入力データ番号
+ int arrayNumber = 0; //配列番号
+ int chapter = 0;
+ int f = 0;
+ byte[] eByte = new byte[1];
+
+ //質問
+ string whereDateFile;
+ string whereKeyFile;
+ string whereEncryptedFile;
+
+ //自動テスト
+ whereDateFile = @"h:\date.txt";
+ whereEncryptedFile = @"h:\encrypted.txt";
+ whereKeyFile = @"h:\key.txt";
+
+ /*
+ whereEncryptedFile = Question("Where will you create encrypted file?", false);
+ whereDateFile = Question("Where is the file you want to encrypt?", true);
+ whereKeyFile = Question("Where is keyFile?", true);
+ */
+
+ //順序ファイルの読み込み
+ StreamReader sr = new StreamReader(whereKeyFile);
+ Console.WriteLine("KeyFile was readed");
+
+
+ //配列に順序を書き込み
+ while (inNumber < 100)
+ {
+ order[inNumber] = int.Parse(sr.ReadLine());
+ inNumber++;
+ }
+ Console.WriteLine("Order was written to int.");
+
+
+ //ファイルの内容をすべて読み込む
+ FileStream fs = new FileStream(whereDateFile, FileMode.Open);
+ byte[] bs = new byte[fs.Length];
+ fs.Read(bs, 0, bs.Length);
+ fs.Close();
+ Console.WriteLine("Date was readed to byte.");
+
+
+
+ inNumber = 0;
+
+ //100dyteを満たさない場合は残りのファイルにゼロを代入
+ if (bs.Length < 100)
+ {
+ Console.WriteLine("File size is less than 100");
+ int dateLength = bs.Length;
+ while (dateLength == 100)
+ {
+ bs[dateLength + 1] = 0;
+ dateLength = bs.Length;
+ }
+ }
+
+ //date[]にビット単位で百分割したファイルを保存
+ //参照したファイルのビット数が百の倍数か判定する。
+ if (bs.Length % 100 == 0)
+ {
+ //100の倍数の場合
+ Console.WriteLine("date.Length mod10 = 0");
+ inNumber = 0;
+ quotient = bs.Length / 100;
+ //ファイルを百分割してdata配列に代入
+ while (arrayNumber < 100)
+ {
+ f = f + quotient + 1;
+ while (inNumber < f)
+ {
+ eByte[0] = bs[inNumber];
+ date[arrayNumber] = Encoding.GetEncoding("UTF-8").GetString(eByte);
+ inNumber++;
+ }
+ Console.WriteLine(arrayNumber + "まで代入完了");
+ arrayNumber++;
+ }
+ }
+ else
+ {
+ Console.WriteLine("date.Length mod10 =! 0");
+ quotient = bs.Length / 99;
+ //100の倍数ではないとき
+ f = 0;
+ inNumber = 0;
+ f = f + quotient - 1;
+ while (arrayNumber < 99)
+ {
+ while (inNumber < f)
+ {
+ eByte[0] = bs[inNumber];
+ date[arrayNumber] = date[arrayNumber] + Encoding.GetEncoding("UTF-8").GetString(eByte);
+ inNumber++;
+ }
+ Console.WriteLine(arrayNumber + "まで代入完了");
+ arrayNumber++;
+ f = f + quotient;
+ }
+ //余りをdate[100]に代入
+ while (inNumber <= bs.Length - 1)
+ {
+ eByte[0] = bs[inNumber];
+ date[arrayNumber] = date[arrayNumber] + Encoding.GetEncoding("UTF-8").GetString(eByte);
+ inNumber++;
+ }
+ Console.WriteLine(arrayNumber + "まで代入完了");
+ }
+
+ //encryptedファイルの生成を開始
+ //配列の順に検索
+ inNumber = 0;
+ int b;
+ StreamWriter outputFile = new StreamWriter(whereEncryptedFile);
+ while (inNumber < date.Length)
+ {
+ //参照すべき行を検索
+ b = order[inNumber];
+
+ //参照して"written"に代入
+ written = date[b];
+
+ //"encrypted"に書き込み
+
+ outputFile.WriteLine(written);
+
+
+ Console.WriteLine(inNumber + "まで代入完了");
+ inNumber++;
+ }
+ outputFile.Close();
+ Console.WriteLine("Encrypt was done!");
+ Console.WriteLine("The date key is " + bs.Length + ".");
+ Console.WriteLine("You have to remamber it!");
+ }
+
+ }
+}
diff --git a/Program.cs b/Program.cs
@@ -1,6 +1,7 @@
using System.Text;
using System;
using System.IO;
+using Cypher;
string answers;
Console.WriteLine("Hello world. I woke up.");
@@ -27,7 +28,8 @@ static string Control()
{
if(answer == "encrypt")
{
- encrypt();
+ Encrypt encrypt = new Encrypt();
+ encrypt.encrypt();
}
else
{
@@ -37,9 +39,10 @@ static string Control()
}
else
{
- if (answer == "createTestDate")
+ if (answer == "test")
{
- CreateDate();
+ Test test = new Test();
+ test.test();
}
}
}
@@ -273,154 +276,6 @@ static void createKey()
streamWriter.Close();
}
-static void encrypt()
-{
- //暗号化
-
- //変数宣言
- int[] order = new int[100];
- string written;
- string[] date = new string[100];
- int quotient; //商
- int amari = 0; //あまり
- int inNumber = 0; //入力データ番号
- int arrayNumber = 0; //配列番号
- int chapter = 0;
- int f = 0;
- byte[] eByte = new byte[1];
-
- //質問
- string whereDateFile;
- string whereKeyFile;
- string whereEncryptedFile;
-
- //自動テスト
- whereDateFile = @"h:\date.txt";
- whereEncryptedFile = @"h:\encrypted.txt";
- whereKeyFile = @"h:\key.txt";
-
- /*
- whereEncryptedFile = Question("Where will you create encrypted file?", false);
- whereDateFile = Question("Where is the file you want to encrypt?", true);
- whereKeyFile = Question("Where is keyFile?", true);
- */
-
- //順序ファイルの読み込み
- StreamReader sr = new StreamReader(whereKeyFile);
- Console.WriteLine("KeyFile was readed");
-
-
- //配列に順序を書き込み
- while (inNumber < 100)
- {
- order[inNumber] = int.Parse(sr.ReadLine());
- inNumber++;
- }
- Console.WriteLine("Order was written to int.");
-
-
- //ファイルの内容をすべて読み込む
- FileStream fs = new FileStream(whereDateFile, FileMode.Open);
- byte[] bs = new byte[fs.Length];
- fs.Read(bs, 0, bs.Length);
- fs.Close();
- Console.WriteLine("Date was readed to byte.");
-
-
-
- inNumber = 0;
-
- //100dyteを満たさない場合は残りのファイルにゼロを代入
- if(bs.Length < 100)
- {
- Console.WriteLine("File size is less than 100");
- int dateLength=bs.Length;
- while(dateLength == 100)
- {
- bs[dateLength + 1] = 0;
- dateLength = bs.Length;
- }
- }
-
- //date[]にビット単位で百分割したファイルを保存
- //参照したファイルのビット数が百の倍数か判定する。
- if (bs.Length % 100 == 0)
- {
- //100の倍数の場合
- Console.WriteLine("date.Length mod10 = 0");
- inNumber = 0;
- quotient = bs.Length / 100;
- //ファイルを百分割してdata配列に代入
- while(arrayNumber < 100)
- {
- f = f + quotient + 1;
- while(inNumber < f)
- {
- eByte[0] = bs[inNumber];
- date[arrayNumber] = Encoding.GetEncoding("UTF-8").GetString(eByte);
- inNumber++;
- }
- Console.WriteLine(arrayNumber + "まで代入完了");
- arrayNumber++;
- }
- }
- else
- {
- Console.WriteLine("date.Length mod10 =! 0");
- quotient = bs.Length / 99;
- //100の倍数ではないとき
- f = 0;
- inNumber = 0;
- f = f + quotient - 1;
- while (arrayNumber < 99)
- {
- while(inNumber < f)
- {
- eByte[0] = bs[inNumber];
- date[arrayNumber] = date[arrayNumber] + Encoding.GetEncoding("UTF-8").GetString(eByte);
- inNumber++;
- }
- Console.WriteLine(arrayNumber + "まで代入完了");
- arrayNumber++;
- f = f + quotient;
- }
- //余りをdate[100]に代入
- while(inNumber <= bs.Length - 1)
- {
- eByte[0] = bs[inNumber];
- date[arrayNumber] = date[arrayNumber] + Encoding.GetEncoding("UTF-8").GetString(eByte);
- inNumber++;
- }
- Console.WriteLine(arrayNumber + "まで代入完了");
- }
-
- //encryptedファイルの生成を開始
- //配列の順に検索
- inNumber = 0;
- int b;
- StreamWriter outputFile = new StreamWriter(whereEncryptedFile);
- while (inNumber < date.Length)
- {
- //参照すべき行を検索
- b = order[inNumber];
-
- //参照して"written"に代入
- written = date[b];
-
- //"encrypted"に書き込み
-
- outputFile.WriteLine(written);
-
-
- Console.WriteLine(inNumber + "まで代入完了");
- inNumber++;
- }
- outputFile.Close();
- Console.WriteLine("Encrypt was done!");
- Console.WriteLine("The date key is " + bs.Length + ".");
- Console.WriteLine("You have to remamber it!");
-}
-
static void CreateDate()
{
/*
@@ -438,41 +293,7 @@ static void CreateDate()
streamWriter.Close();
*/
- //順番にデータを移行
- string whereEncrypted = @"h:\encrypted.txt";
- int howLongDateInt = 390;
- int inNumber;
- string[] encrypted = new string[howLongDateInt];
- byte[] dates = new byte[howLongDateInt];
- inNumber = 0;
- //encrypted の読み込み
- StreamReader streamReader = new StreamReader(whereEncrypted);
- inNumber = 0;
- while (inNumber < howLongDateInt)
- {
- encrypted[inNumber] = streamReader.ReadLine();
- Console.WriteLine(inNumber);
- inNumber++;
- }
- streamReader.Close();
- Console.WriteLine("Encrypted date was readed");
-
- //sortedを一つに統合
- string writtens = string.Concat(encrypted);
-
- //データを元の長さに整理
- //ファイルサイズが100以下の場合
- inNumber = 0;
- while (writtens.Length > 0)
- {
- byte date = Encoding.GetEncoding("UTF-8").GetBytes(encrypted[inNumber]);
- datess[inNumber]= date
- }
-
-
- //書きこ
- File.WriteAllBytes(@"h:\tested.txt", dates);
}
static void Writedate(string[] date)
diff --git a/test.cs b/test.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Cypher
+{
+ internal class Test
+ {
+ public void test()
+ {
+ //暗号化
+
+ //変数宣言
+ int[] order = new int[100];
+ string written;
+ string[] date = new string[100];
+ int quotient; //商
+ int amari = 0; //あまり
+ int inNumber = 0; //入力データ番号
+ int arrayNumber = 0; //配列番号
+ int chapter = 0;
+ int f = 0;
+ byte[] eByte = new byte[1];
+
+ //質問
+ string whereDateFile;
+ string whereKeyFile;
+ string whereEncryptedFile;
+
+ //自動テスト
+ whereDateFile = @"h:\date.txt";
+ whereEncryptedFile = @"h:\encrypted.txt";
+ whereKeyFile = @"h:\key.txt";
+
+ /*
+ whereEncryptedFile = Question("Where will you create encrypted file?", false);
+ whereDateFile = Question("Where is the file you want to encrypt?", true);
+ whereKeyFile = Question("Where is keyFile?", true);
+ */
+
+ //順序ファイルの読み込み
+ StreamReader sr = new StreamReader(whereKeyFile);
+ Console.WriteLine("KeyFile was readed");
+
+
+ //配列に順序を書き込み
+ while (inNumber < 100)
+ {
+ order[inNumber] = int.Parse(sr.ReadLine());
+ inNumber++;
+ }
+ Console.WriteLine("Order was written to int.");
+
+
+ //ファイルの内容をすべて読み込む
+ FileStream fs = new FileStream(whereDateFile, FileMode.Open);
+ byte[] bs = new byte[fs.Length];
+ fs.Read(bs, 0, bs.Length);
+ fs.Close();
+ Console.WriteLine("Date was readed to byte.");
+
+
+ }
+ }
+}