透かしなしで本番環境でテストしてください。
必要な場所で動作します。
30日間、完全に機能する製品をご利用いただけます。
数分で稼働させることができます。
製品トライアル期間中にサポートエンジニアリングチームへの完全アクセス
AES(高度暗号化規格)は、最も一般的に使用されている対称暗号化アルゴリズムの1つです。 データの暗号化と復号化に同じキーを使用するため、AES 暗号化は多くのアプリケーションで機密データを効率的かつ高速に保護します。
このチュートリアルでは、C# での AES 暗号化に焦点を当て、AES クラスを使用してデータを暗号化および復号化し、C# での AES 暗号化について説明します。IronPDFライブラリ. 実用的な例を取り上げ、暗号化プロセスを歩き、Cipher Block Chaining の使用方法を説明します。(CBC)セキュリティを高めるモード。 また、暗号化キーの管理と初期化ベクトルの役割についても説明します。(IV).
高度暗号化規格(AES)は、米国国立標準技術研究所によって標準化された対称暗号化アルゴリズムです。(NIST). このアルゴリズムは、128、192、256ビットのキーサイズを持つことができ、機密データを暗号化するために非常に安全です。 データの暗号化と復号化には、同じ暗号化キーを使用します。
AESは、元のデータをブロックに分割し、それらのブロックに変換を適用することで機能します。 CBCのような異なる暗号モードで動作します。(暗号ブロック連鎖)および電子コードブック(ECB)これらのツールは、それぞれ異なるセキュリティ機能を提供しています。
C#のAES暗号化アルゴリズムは、System.Security.Cryptography名前空間の一部です。 この名前空間にはAESクラスが含まれており、AESのインスタンスを作成し、キー・サイズ、暗号モード、パディング・モードを指定し、秘密キーを使用してデータを暗号化および復号化することができます。
C#でAESを使用するには、以下の基本的な手順に従ってください:
Aes.Create を使用して AES クラスのインスタンスを作成します。().
鍵、IV、および暗号モードなどの関連パラメータを設定する。
ICryptoTransform インターフェイスを使用してデータを暗号化し、MemoryStream に書き込みます。
同じキーとIVを使用してデータを復号化する。
C#で基本的な暗号化処理と復号化プログラムを作ってみましょう。
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class Program
{
// Declare a static byte array for encrypted data
public static byte[] encryptedData;
// static void Main
public static void Main(string[] args)
{
// string plaintext to be encrypted
string plaintext = "This is some sensitive data!";
string key = "abcdefghijklmnop"; // 128-bit key (16 characters)
// Encrypt the plaintext
string ciphertext = Encrypt(plaintext, key);
Console.WriteLine("Encrypted Data: " + ciphertext);
// Decrypt the ciphertext
string decryptedData = Decrypt(ciphertext, key);
Console.WriteLine("Decrypted Data: " + decryptedData);
}
public static string Encrypt(string plaintext, string key)
{
// AES algorithm
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = new byte[16]; // Initialization vector (IV)
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cs))
{
sw.Write(plaintext);
}
}
// Store the encrypted data in the public static byte array
encryptedData = ms.ToArray();
return Convert.ToBase64String(encryptedData);
}
}
}
public static string Decrypt(string ciphertext, string key)
{
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = new byte[16]; // Initialization vector (IV)
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(ciphertext)))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (StreamReader sr = new StreamReader(cs))
{
return sr.ReadToEnd();
}
}
}
}
}
}
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
class Program
{
// Declare a static byte array for encrypted data
public static byte[] encryptedData;
// static void Main
public static void Main(string[] args)
{
// string plaintext to be encrypted
string plaintext = "This is some sensitive data!";
string key = "abcdefghijklmnop"; // 128-bit key (16 characters)
// Encrypt the plaintext
string ciphertext = Encrypt(plaintext, key);
Console.WriteLine("Encrypted Data: " + ciphertext);
// Decrypt the ciphertext
string decryptedData = Decrypt(ciphertext, key);
Console.WriteLine("Decrypted Data: " + decryptedData);
}
public static string Encrypt(string plaintext, string key)
{
// AES algorithm
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = new byte[16]; // Initialization vector (IV)
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cs))
{
sw.Write(plaintext);
}
}
// Store the encrypted data in the public static byte array
encryptedData = ms.ToArray();
return Convert.ToBase64String(encryptedData);
}
}
}
public static string Decrypt(string ciphertext, string key)
{
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = new byte[16]; // Initialization vector (IV)
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(ciphertext)))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (StreamReader sr = new StreamReader(cs))
{
return sr.ReadToEnd();
}
}
}
}
}
}
Aes aes = Aes.Create():AES 暗号化アルゴリズムの新しいインスタンスを作成します。
Aes.Key:暗号化と復号化の両方に使用されるキー。 128ビットのような有効なサイズでなければなりません。(16バイト)192ビットまたは256ビット。
Aes.IV:初期化ベクトル(IV).NET、Java、Python、またはNode.jsを含むプロジェクトに携わるソフトウェア開発者を対象としています。 この例では、簡単のためにゼロのIVを使用しています。
MemoryStream:これは、暗号化されたデータをバイトのストリームとして扱うことを可能にします。
ランダムキーとIV**を生成することによって、暗号化がより安全であることを保証することによって、前の例を構築してみましょう。
public static string EncryptData(string plaintext)
{
using (Aes aes = Aes.Create())
{
aes.Key = new byte[32]; // AES-256 requires a 256-bit key (32 bytes)
aes.IV = new byte[16]; // 128-bit block size
using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
{
rng.GetBytes(aes.Key); // Generate a random key
rng.GetBytes(aes.IV); // Generate a random IV
}
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cs))
{
sw.Write(plaintext);
}
}
return Convert.ToBase64String(ms.ToArray());
}
}
}
public static string EncryptData(string plaintext)
{
using (Aes aes = Aes.Create())
{
aes.Key = new byte[32]; // AES-256 requires a 256-bit key (32 bytes)
aes.IV = new byte[16]; // 128-bit block size
using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
{
rng.GetBytes(aes.Key); // Generate a random key
rng.GetBytes(aes.IV); // Generate a random IV
}
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cs))
{
sw.Write(plaintext);
}
}
return Convert.ToBase64String(ms.ToArray());
}
}
}
この場合、関数が呼び出されるたびに、新しいキーとIVを生成します。 これは、同じキーがすべての操作で使用されないため、より堅牢な暗号化を提供します。 AESは、128ビット、192ビット、256ビットなどのキーサイズをサポートしています。
復号化とは、データを暗号化する逆のプロセスです。 この例では、データを復号化するために、暗号化に使用したのと同じ鍵とIVを提供する必要があります。 復号化プロセスでは、暗号化されたデータを元の形式に変換します。
以下は、暗号化されたデータを使用した例です:
public static string DecryptData(string ciphertext, byte[] key, byte[] iv)
{
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(ciphertext)))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (StreamReader sr = new StreamReader(cs))
{
return sr.ReadToEnd();
}
}
}
}
}
public static string DecryptData(string ciphertext, byte[] key, byte[] iv)
{
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(ciphertext)))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (StreamReader sr = new StreamReader(cs))
{
return sr.ReadToEnd();
}
}
}
}
}
このコードは、暗号化されたデータを元のデータに復号します。
IronPDFはシンプルで開発者に優しい.NETライブラリで、シンプルなC#コードでPDFを生成、編集、操作できるように設計されています。 これにより、開発者は次のことが可能になります。HTMLから直接PDF文書を作成.NET、CSS、JavaScriptは、レポート、請求書、その他の文書を動的に生成するのに非常に便利です。 結合、分割、そしてパスワードやデジタル署名のようなセキュリティ機能の追加までサポートするIronPDFは、.NETアプリケーションでのPDF生成のための包括的なソリューションです。
機密性の高いレポートや文書を作成する場合、PDF内のデータを暗号化してから共有する必要があります。 AES(高度暗号化標準)encryptionは、PDFファイルの内容を安全に暗号化するための完璧なソリューションです。 IronPDFとAES暗号化を組み合わせることで、PDF内のデータを保護しながら、ドキュメント自体の操作性を維持することができます。
HTMLコンテンツからPDFを生成してファイルに保存するには、ChromePdfRendererクラスを使用します:
var htmlContent = "<h1>Confidential</h1><p>This is sensitive data.</p>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs(@"C:\Reports\ConfidentialReport.pdf");
var htmlContent = "<h1>Confidential</h1><p>This is sensitive data.</p>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs(@"C:\Reports\ConfidentialReport.pdf");
PDFを作成したら、AESで暗号化してください:
byte[] pdfBytes = File.ReadAllBytes(@"C:\Reports\ConfidentialReport.pdf");
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes("abcdefghijklmnop");
aes.IV = new byte[16];
using (var encryptor = aes.CreateEncryptor(aes.Key, aes.IV))
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
cs.Write(pdfBytes, 0, pdfBytes.Length);
}
File.WriteAllBytes(@"C:\Reports\ConfidentialReport.encrypted", ms.ToArray());
}
}
byte[] pdfBytes = File.ReadAllBytes(@"C:\Reports\ConfidentialReport.pdf");
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes("abcdefghijklmnop");
aes.IV = new byte[16];
using (var encryptor = aes.CreateEncryptor(aes.Key, aes.IV))
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
cs.Write(pdfBytes, 0, pdfBytes.Length);
}
File.WriteAllBytes(@"C:\Reports\ConfidentialReport.encrypted", ms.ToArray());
}
}
IronPDFとAES暗号化を統合することで、アクセス可能で暗号化されたダイナミックでセキュアなドキュメントを生成することができます。 セキュアなドキュメント生成を必要とするアプリケーションの開発であれ、機密性の高いレポートの管理であれ、IronPDFと強固な暗号化を組み合わせることで、データを保護することができます。 IronPDFはPDFでの作業を簡素化し、AESはコンテンツの安全性を保証します。
IronPDFは無料試用また、開発者が、契約する前にその機能を簡単に検討できるようにする必要があります。 IronPDFをプロジェクトに導入する準備ができたら、ライセンスは一度限りの購入で$749から始まります。