C#에서 문자열 암호화 및 해독

Muhammad Maisam Abbas 2024년2월16일
  1. C#에서AesManaged클래스를 사용하여 문자열 암호화
  2. C#에서AesManaged클래스를 사용하여 문자열 해독
C#에서 문자열 암호화 및 해독

이 자습서에서는 C#에서 문자열을 암호화 및 해독하는 방법에 대해 설명합니다.

C#에서AesManaged클래스를 사용하여 문자열 암호화

암호화는 권한이없는 개인이 데이터에 액세스 할 수 없도록 데이터를 암호문으로 변환하는 프로세스입니다. 이 자습서에서는고급 암호화 표준(AES) 알고리즘을 사용하여 C#의 문자열을 암호화하고 해독합니다. AesManaged클래스은 AES 알고리즘을 사용하여 문자열을 암호화하고 해독하는 방법을 제공합니다. CreateEncryptor()함수는 키를 사용하여 데이터를 암호화 할 수 있습니다. 문자열 키를CreateEncryptor()함수에 전달해야합니다. 다음 코드 예제는 C#에서CreateEncryptor()함수를 사용하여 AES 알고리즘에 따라 문자열을 암호화하는 방법을 보여줍니다.

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace encrypt_decrypt_string {
  class Program {
    static string Encrypt() {
      try {
        string textToEncrypt = "WaterWorld";
        string ToReturn = "";
        string publickey = "12345678";
        string secretkey = "87654321";
        byte[] secretkeyByte = {};
        secretkeyByte = System.Text.Encoding.UTF8.GetBytes(secretkey);
        byte[] publickeybyte = {};
        publickeybyte = System.Text.Encoding.UTF8.GetBytes(publickey);
        MemoryStream ms = null;
        CryptoStream cs = null;
        byte[] inputbyteArray = System.Text.Encoding.UTF8.GetBytes(textToEncrypt);
        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) {
          ms = new MemoryStream();
          cs = new CryptoStream(ms, des.CreateEncryptor(publickeybyte, secretkeyByte),
                                CryptoStreamMode.Write);
          cs.Write(inputbyteArray, 0, inputbyteArray.Length);
          cs.FlushFinalBlock();
          ToReturn = Convert.ToBase64String(ms.ToArray());
        }
        return ToReturn;
      } catch (Exception ex) {
        throw new Exception(ex.Message, ex.InnerException);
      }
    }
    static void Main(string[] args) {
      string encrypted = Encrypt();
      Console.WriteLine(encrypted);
    }
  }
}

출력:

6+PXxVWlBqcUnIdqsMyUHA==

위 코드에서publickeysecretkey를 키로 사용하여WaterWorld문자열을 암호화하고 암호화 된 문자열로6+PXxVWlBqcUnIdqsMyUHA==를 반환했습니다. 두 키의 길이는 8 자 이상이어야합니다.

C#에서AesManaged클래스를 사용하여 문자열 해독

복호화는 권한이있는 개인이 데이터에 액세스 할 수 있도록 암호문을 원래 데이터로 다시 변환하는 프로세스입니다. CreateDecryptor()함수는 키를 사용하여 데이터를 해독 할 수 있습니다. 문자열 키를CreateEncryptor()함수에 전달해야합니다. 키는CreateDecryptor()함수에 사용 된 것과 동일해야합니다. 다음 코드 예제는 C#에서CreateDecryptor()함수를 사용하여 AES 알고리즘에 따라 문자열을 암호화하는 방법을 보여줍니다.

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace encrypt_decrypt_string {
  class Program {
    static string Decrypt() {
      try {
        string textToDecrypt = "6+PXxVWlBqcUnIdqsMyUHA==";
        string ToReturn = "";
        string publickey = "12345678";
        string secretkey = "87654321";
        byte[] privatekeyByte = {};
        privatekeyByte = System.Text.Encoding.UTF8.GetBytes(secretkey);
        byte[] publickeybyte = {};
        publickeybyte = System.Text.Encoding.UTF8.GetBytes(publickey);
        MemoryStream ms = null;
        CryptoStream cs = null;
        byte[] inputbyteArray = new byte[textToDecrypt.Replace(" ", "+").Length];
        inputbyteArray = Convert.FromBase64String(textToDecrypt.Replace(" ", "+"));
        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) {
          ms = new MemoryStream();
          cs = new CryptoStream(ms, des.CreateDecryptor(publickeybyte, privatekeyByte),
                                CryptoStreamMode.Write);
          cs.Write(inputbyteArray, 0, inputbyteArray.Length);
          cs.FlushFinalBlock();
          Encoding encoding = Encoding.UTF8;
          ToReturn = encoding.GetString(ms.ToArray());
        }
        return ToReturn;
      } catch (Exception ae) {
        throw new Exception(ae.Message, ae.InnerException);
      }
    }
    static void Main(string[] args) {
      string decrypted = Decrypt();
      Console.WriteLine(decrypted);
    }
  }
}

출력:

WaterWorld

위의 코드에서 암호화 된 문자열6+PXxVWlBqcUnIdqsMyUHA==를 이전 예제에서 다시 원래 형식WaterWorld로 변환하고publickeysecretkey를 키로 사용합니다. 이 방법이 작동하려면 키가 이전 예제에서 사용 된 키와 동일해야합니다.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

관련 문장 - Csharp String