teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

暗号化のソースを追記しました。

2016/08/26 13:28

投稿

porepore
porepore

スコア15

title CHANGED
File without changes
body CHANGED
@@ -10,12 +10,64 @@
10
10
  ```c#
11
11
  static void Main()
12
12
  {
13
+ string sfile = @"C:\test\enc.txt"; //暗号化前ファイル
13
14
  string dfile = @"C:\test\dec.txt"; //暗号化ファイル
14
15
  string efile = @"C:\test\out.txt"; //復号ファイル
15
16
  string key = @"hoge"; //パスワード
17
+ AesEnc(sfile, dfile, key);
16
- AesDec(dfile, efile, key);
18
+ AesDec(dfile, efile, key);
17
19
  }
20
+ //暗号化
21
+ static void AesEnc(string sFile, string dFile, string key)
22
+ {
23
+ AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
18
24
 
25
+ aes.BlockSize = 128;
26
+ aes.KeySize = 128;
27
+ aes.Mode = CipherMode.CBC;
28
+ aes.Padding = PaddingMode.PKCS7;
29
+
30
+ aes.GenerateIV();
31
+ byte[] byteIV = aes.IV;
32
+
33
+ byte[] bytesPassword = Encoding.UTF8.GetBytes(key);
34
+ byte[] bytesKey = new byte[16];
35
+
36
+ for (int i = 0; i < 16; i++)
37
+ {
38
+ if (i < bytesPassword.Length)
39
+ {
40
+ bytesKey[i] = bytesPassword[i];
41
+ }
42
+ else
43
+ {
44
+ bytesKey[i] = 0; }
45
+ }
46
+
47
+ aes.Key = bytesKey;
48
+
49
+ ICryptoTransform encrypt = aes.CreateEncryptor();
50
+ FileStream outfs = new FileStream(dFile, FileMode.Create, FileAccess.Write);
51
+ outfs.Write(byteIV, 0, 16);
52
+
53
+ CryptoStream cs = new CryptoStream(outfs, encrypt, CryptoStreamMode.Write);
54
+ FileStream fs = new FileStream(sFile, FileMode.Open, FileAccess.Read);
55
+
56
+ byte[] buf = new byte[1024];
57
+ int len;
58
+
59
+ while ((len = fs.Read(buf, 0, buf.Length)) > 0)
60
+ {
61
+ cs.Write(buf, 0, len);
62
+
63
+ }
64
+ fs.Close();
65
+ cs.Close();
66
+ encrypt.Dispose();
67
+ outfs.Close();
68
+ }
69
+
70
+ //復号
19
71
  static void AesDec(string sFile, string dFile, string key)
20
72
  {
21
73
  AesCryptoServiceProvider aes = new AesCryptoServiceProvider();