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== 위 코드에서publickey및secretkey를 키로 사용하여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로 변환하고publickey및secretkey를 키로 사용합니다. 이 방법이 작동하려면 키가 이전 예제에서 사용 된 키와 동일해야합니다.
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