using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class Program
{
static void Main()
{
string originalText = "これは暗号化されるテキストです。";
string secretKey = "これは秘密のキーです。";
byte[] encryptedBytes = Encrypt(originalText, secretKey);
string encryptedText = Convert.ToBase64String(encryptedBytes);
Console.WriteLine("暗号化されたテキスト: " + encryptedText);
string decryptedText = Decrypt(encryptedBytes, secretKey);
Console.WriteLine("復号化されたテキスト: " + decryptedText);
}
static byte[] Encrypt(string plainText, string secretKey)
{
byte[] encryptedBytes;
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(secretKey);
aes.GenerateIV();
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
cs.Write(plainBytes, 0, plainBytes.Length);
}
encryptedBytes = ms.ToArray();
}
}
return encryptedBytes;
}
static string Decrypt(byte[] encryptedBytes, string secretKey)
{
string decryptedText;
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(secretKey);
byte[] iv = new byte[aes.IV.Length];
Array.Copy(encryptedBytes, 0, iv, 0, iv.Length);
aes.IV = iv;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write))
{
cs.Write(encryptedBytes, iv.Length, encryptedBytes.Length - iv.Length);
}
byte[] decryptedBytes = ms.ToArray();
decryptedText = Encoding.UTF8.GetString(decryptedBytes);
}
}
return decryptedText;
}
}
この例では、Encrypt
メソッドを使用して平文テキストを暗号化し、Decrypt
メソッドを使用して暗号化されたバイト配列を復号化します。AESアルゴリズムを使用するためには、秘密のキーが必要です。秘密のキーは、文字列からバイト配列に変換されます。
上記のコードを実行すると、暗号化されたテキストと復号化されたテキストが表示されます。この例では、AESアルゴリズムを使用して文字列を安全に暗号化および復号化する方法を示しています。