commit 44759fa9ce0794020641897c464faa4fc270f59f
parent 246d625e821ecbfb8814141e192eeafbb4527791
Author: Minerva_juppiter <94231606+minerva-jupiter@users.noreply.github.com>
Date: Sun, 26 Jun 2022 23:40:44 +0900
Diffstat:
| M | Encrypt.cs | | | 124 | +++++++++++++++++++++++++++++++++---------------------------------------------- |
| M | test.cs | | | 107 | +------------------------------------------------------------------------------ |
2 files changed, 53 insertions(+), 178 deletions(-)
diff --git a/Encrypt.cs b/Encrypt.cs
@@ -20,10 +20,11 @@ namespace Cypher
int amari = 0; //あまり
int inNumber = 0; //入力データ番号
int arrayNumber = 0; //配列番号
- int Cchapter = 0;
+ int chapter = 0;
int f = 0;
byte[] eByte = new byte[1];
+
//質問
string whereDateFile;
string whereKeyFile;
@@ -40,6 +41,11 @@ namespace Cypher
whereKeyFile = Question("Where is keyFile?", true);
*/
+ //順序ファイルの読み込み
+ StreamReader sr = new StreamReader(whereKeyFile);
+
+
+ //配列に順序を書き込み
ResdFiles resdFiles = new ResdFiles();
order = resdFiles.ReadKeyFile(whereKeyFile);
@@ -49,101 +55,75 @@ namespace Cypher
byte[] bs = new byte[fs.Length];
fs.Read(bs, 0, bs.Length);
fs.Close();
- Console.WriteLine("Date was readed to byte.");
-
+ byte[] encrypted = new byte[bs.Length];
- 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[]にビット単位で百分割したファイルを保存
- //参照したファイルのビット数が百の倍数か判定する。
+ //ここまでテスト完了
+ int indexNumuber;
+ int indexEnd;
+ int indexStart;
+ int outNumber = 0;
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)
+ indexNumuber = Array.IndexOf(order, arrayNumber);
+ indexStart = quotient * indexNumuber;
+ indexEnd = quotient * (indexNumuber + 1);
+ inNumber = indexStart;
+ while (inNumber < indexEnd)
{
- eByte[0] = bs[inNumber];
- date[arrayNumber] = Encoding.GetEncoding("UTF-8").GetString(eByte);
- inNumber++;
+ encrypted[outNumber] = bs[inNumber];
+ outNumber++;
}
- Console.WriteLine(arrayNumber + "まで代入完了");
arrayNumber++;
}
}
else
{
- Console.WriteLine("date.Length mod10 =! 0");
+ //割り切れない場合
quotient = bs.Length / 99;
- //100の倍数ではないとき
- f = 0;
- inNumber = 0;
- f = f + quotient - 1;
+ amari = bs.Length - quotient * 99;
+ int where99 = Array.IndexOf(order, 99);
+
while (arrayNumber < 99)
{
- while (inNumber < f)
+ indexNumuber = Array.IndexOf(order, arrayNumber);
+ if (indexNumuber < where99)
{
- eByte[0] = bs[inNumber];
- date[arrayNumber] = date[arrayNumber] + Encoding.GetEncoding("UTF-8").GetString(eByte);
+ indexStart = quotient * indexNumuber;
+ indexEnd = quotient * (indexNumuber + 1);
+ }
+ else if (indexNumuber == where99)
+ {
+ indexStart = where99 * quotient;
+ indexEnd = (where99 + 1) * quotient;
+ }
+ else
+ {
+ indexStart = (indexNumuber - 1) * quotient + amari;
+ indexEnd = indexNumuber * quotient + amari;
+ }
+
+
+ inNumber = indexStart;
+ while (inNumber < indexEnd)
+ {
+ encrypted[outNumber] = bs[inNumber];
+ outNumber++;
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++;
+ //書きこ
+ File.WriteAllBytes(whereEncryptedFile, encrypted);
+ Console.WriteLine("Encrypt was ended.");
+ Console.WriteLine("The date key is " + encrypted.Length + ".");
+ Console.WriteLine("You have to remember it!");
}
- 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/test.cs b/test.cs
@@ -11,117 +11,12 @@ namespace Cypher
{
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");
-
-
- //配列に順序を書き込み
- ResdFiles resdFiles = new ResdFiles();
- order = resdFiles.ReadKeyFile(whereKeyFile);
-
-
- //ファイルの内容をすべて読み込む
- 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.");
-
- byte[] encrypted = new byte[bs.Length];
+ }
- //ここまでテスト完了
- int indexNumuber;
- int indexEnd;
- int indexStart;
- int outNumber = 0;
- if (bs.Length % 0 == 0)
- {
- quotient = bs.Length / 100;
- //百で割り切れる場合
- while(arrayNumber < 100)
- {
- indexNumuber = Array.IndexOf(order, arrayNumber);
- indexStart = quotient * indexNumuber;
- indexEnd = quotient * (indexNumuber+1);
- inNumber = indexStart;
- while (inNumber < indexEnd)
- {
- encrypted[outNumber] = bs[inNumber];
- outNumber++;
- }
- arrayNumber++;
- }
- }
- else
- {
- //割り切れない場合
- quotient = bs.Length / 99;
- amari = bs.Length - quotient * 99;
- int where99 = Array.IndexOf(order, 99);
- {
- while(arrayNumber < 100)
- {
- indexNumuber = Array.IndexOf(order, arrayNumber);
- if(indexNumuber < where99)
- {
- indexStart = quotient * indexNumuber;
- indexEnd = quotient * (indexNumuber + 1);
- }else if(indexNumuber == where99){
- indexStart = where99 * quotient;
- indexEnd = (where99+1) * quotient;
- }
- else
- {
- indexStart = (indexNumuber-1) * quotient + amari;
- indexEnd = indexNumuber * quotient + amari;
- }
- inNumber = indexStart;
- while(inNumber < indexEnd)
- {
- encrypted[outNumber] = bs[inNumber];
- outNumber++;
- }
- arrayNumber++;
- }
- }
- }
-
- }
public void Writedate(byte[] date)