· 6 years ago · Sep 14, 2019, 04:44 PM
1using System;
2using System.Text;
3using System.Security.Cryptography;
4
5namespace TripleDES
6{
7 class Program
8 {
9 private string encrypt(string clearText, string secretKey)
10 {
11 try
12 {
13 TripleDESCryptoServiceProvider tripleDESProvider = new TripleDESCryptoServiceProvider();
14 byte[] byteKey = Encoding.UTF8.GetBytes(secretKey.PadRight(24, '\0'));
15 if(byteKey.Length > 24)
16 {
17 byte[] bytePass = new byte[24];
18 Buffer.BlockCopy(byteKey, 0, bytePass, 0, 24);
19 byteKey = bytePass;
20 }
21 byte[] byteText = Encoding.UTF8.GetBytes(clearText);
22
23 tripleDESProvider.Key = byteKey;
24 tripleDESProvider.Mode = CipherMode.ECB;
25
26 byte[] byteMessage = tripleDESProvider.CreateEncryptor().TransformFinalBlock(byteText, 0, byteText.Length);
27
28 return Convert.ToBase64String(byteMessage);
29 }
30 catch(Exception ex)
31 {
32 return ex.Message;
33 }
34 }
35
36 private string decrypt(string data, string secretKey)
37 {
38 try
39 {
40 byte[] byteData = Convert.FromBase64String(data);
41 byte[] byteKey = Encoding.UTF8.GetBytes(secretKey.PadRight(24, '\0'));
42 if (byteKey.Length > 24)
43 {
44 byte[] bytePass = new byte[24];
45 Buffer.BlockCopy(byteKey, 0, bytePass, 0, 24);
46 byteKey = bytePass;
47 }
48
49 TripleDESCryptoServiceProvider tripleDESProvider = new TripleDESCryptoServiceProvider();
50 tripleDESProvider.Key = byteKey;
51 tripleDESProvider.Mode = CipherMode.ECB;
52
53 byte[] byteText = tripleDESProvider.CreateDecryptor().TransformFinalBlock(byteData, 0, byteData.Length);
54 return Encoding.UTF8.GetString(byteText);
55 }
56 catch(Exception ex)
57 {
58 return ex.Message;
59 }
60 }
61 static void Main(string[] args)
62 {
63 string clearText = "BSプレミアム20日放送";
64 string secretKey = "SecretKey";
65
66 string data = new TripleDES.Program().encrypt(clearText, secretKey);
67 clearText = new TripleDES.Program().decrypt(data, secretKey);
68
69 Console.WriteLine("Encrypted String: " + data);
70 Console.WriteLine(clearText);
71
72 Console.ReadLine();
73 }
74 }
75}