ホームページ >バックエンド開発 >C#.Net チュートリアル >C# におけるファイル暗号化および復号化アルゴリズムの一般的な問題
C# での一般的なファイル暗号化および復号化アルゴリズムの問題には、特定のコード例が必要です
現代のコンピューター アプリケーションでは、データ保護とセキュリティが特に重要です。ファイルの暗号化および復号化アルゴリズムは、送信中および保存中に権限のない担当者によってファイルがアクセスされたり変更されたりしないようにするために、一般的に使用されるデータ セキュリティ保護手段です。この記事では、C# における一般的なファイル暗号化および復号化アルゴリズムの問題を調査し、対応する具体的なコード例を示します。
public static byte[] GenerateRandomKey() { byte[] key = new byte[8]; using (var rng = new RNGCryptoServiceProvider()) { rng.GetBytes(key); } return key; }次に、生成されたキーを使用してファイルを暗号化および復号化できます。ファイル暗号化に DES アルゴリズムを使用する例を次に示します。
public static void EncryptFile(string inputFile, string outputFile, byte[] key) { using (var des = new DESCryptoServiceProvider()) { des.Key = key; des.Mode = CipherMode.ECB; using (var fsInput = new FileStream(inputFile, FileMode.Open, FileAccess.Read)) { using (var fsOutput = new FileStream(outputFile, FileMode.Create, FileAccess.Write)) { using (var cryptoStream = new CryptoStream(fsOutput, des.CreateEncryptor(), CryptoStreamMode.Write)) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fsInput.Read(buffer, 0, buffer.Length)) > 0) { cryptoStream.Write(buffer, 0, bytesRead); } } } } } }上記のコード例では、DESCryptoServiceProvider クラスを使用して DES 暗号化アルゴリズムのインスタンスを作成します。次に、CreateEncryptor メソッドを使用してエンクリプタを生成し、暗号化されたデータを出力ファイルに書き込みます。 ファイルを復号化するプロセスは暗号化と似ていますが、暗号化プログラムの作成を復号化プログラムの作成に変更するだけです。 DES アルゴリズムを使用したファイル復号化の例を次に示します。
public static void DecryptFile(string inputFile, string outputFile, byte[] key) { using (var des = new DESCryptoServiceProvider()) { des.Key = key; des.Mode = CipherMode.ECB; using (var fsInput = new FileStream(inputFile, FileMode.Open, FileAccess.Read)) { using (var fsOutput = new FileStream(outputFile, FileMode.Create, FileAccess.Write)) { using (var cryptoStream = new CryptoStream(fsOutput, des.CreateDecryptor(), CryptoStreamMode.Write)) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fsInput.Read(buffer, 0, buffer.Length)) > 0) { cryptoStream.Write(buffer, 0, bytesRead); } } } } } }
public static void GenerateKeyPair(out string publicKey, out string privateKey) { using (var rsa = new RSACryptoServiceProvider()) { publicKey = rsa.ToXmlString(false); privateKey = rsa.ToXmlString(true); } }キーを生成した後、公開キーを使用してファイルを暗号化し、秘密キーを使用してファイルを復号化できます。ファイル暗号化に RSA アルゴリズムを使用する例を次に示します。
public static void EncryptFile(string inputFile, string outputFile, string publicKey) { using (var rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(publicKey); using (var fsInput = new FileStream(inputFile, FileMode.Open, FileAccess.Read)) { using (var fsOutput = new FileStream(outputFile, FileMode.Create, FileAccess.Write)) { using (var cryptoStream = new CryptoStream(fsOutput, rsa.Encryptor, CryptoStreamMode.Write)) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fsInput.Read(buffer, 0, buffer.Length)) > 0) { cryptoStream.Write(buffer, 0, bytesRead); } } } } } }上記のコード例では、公開キーに基づいて RSACryptoServiceProvider インスタンスを作成し、Encryptor 属性を使用して暗号化子を取得し、暗号化されたデータをファイルに出力します。 ファイルを復号化するプロセスは暗号化と似ていますが、暗号化プログラムの作成を復号化プログラムの作成に変更するだけです。ファイル復号化に RSA アルゴリズムを使用する例を次に示します。
public static void DecryptFile(string inputFile, string outputFile, string privateKey) { using (var rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(privateKey); using (var fsInput = new FileStream(inputFile, FileMode.Open, FileAccess.Read)) { using (var fsOutput = new FileStream(outputFile, FileMode.Create, FileAccess.Write)) { using (var cryptoStream = new CryptoStream(fsOutput, rsa.Decryptor, CryptoStreamMode.Write)) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fsInput.Read(buffer, 0, buffer.Length)) > 0) { cryptoStream.Write(buffer, 0, bytesRead); } } } } } }概要: ファイル暗号化および復号化アルゴリズムは、データ セキュリティを保護する重要な手段です。この記事では、C# の一般的な対称および非対称暗号化アルゴリズムを紹介し、対応するコード例を示します。これらの暗号化アルゴリズムを理解して適用することで、ファイルの機密性と完全性を保護し、送信および保存中のデータのセキュリティを確保できます。
以上がC# におけるファイル暗号化および復号化アルゴリズムの一般的な問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。