質問編集履歴
1
暗号化のソースを追記しました。
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
|
-
|
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();
|