C# :: Code & APIs

[C#] C# 에서 문자열 암호화 / 복호화 하기

[C#] C# 에서 문자열 암호화 / 복호화 하기

 private string Key_String = "12345678";

        #region String을 byte로 단순 변환
        /// <summary>
        /// String을 byte[]로 단순 변환
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>

        private byte[] stringToByte(string value)
        {
            Byte[] buffer = new byte[value.Length];

            for (int i = 0; i < value.Length; i++)
            {
                buffer[i] = Convert.ToByte(value.Substring(i, 1));
            }
            return buffer;
        }
        #endregion

        #region 실제로 복호화하는 함수
        // Decrypt the byte array.
        /// <summary>
        /// 복호화 주요 함수
        /// </summary>
        /// <param name="CypherText">해독할 값</param>
        /// <param name="key">키 값</param>
        /// <returns></returns>
        private string Decrypt(byte[] CypherText, SymmetricAlgorithm key)
        {
            // Create a memory stream to the passed buffer.
            MemoryStream ms = new MemoryStream(CypherText);

            // Create a CryptoStream using the memory stream and the
            // CSP DES key.
            CryptoStream encStream = new CryptoStream(ms, key.CreateDecryptor(), CryptoStreamMode.Read);

            // Create a StreamReader for reading the stream.
            StreamReader sr = new StreamReader(encStream);

            // Read the stream as a string.
            string val = sr.ReadLine();

            // Close the streams.
            sr.Close();
            encStream.Close();
            ms.Close();

            return val;
        }
        #endregion

        #region 암호화를 수행하는 중요 함수
        /// <summary>
        /// 암호화를 수행하는 중요 함수
        /// </summary>
        /// <param name="PlainText"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        // Encrypt the string.
        public static byte[] Encrypt(string PlainText, SymmetricAlgorithm key)
        {
            // Create a memory stream.
            MemoryStream ms = new MemoryStream();

            // Create a CryptoStream using the memory stream and the
            // CSP DES key. 
            CryptoStream encStream = new CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write);

            // Create a StreamWriter to write a string
            // to the stream.
            StreamWriter sw = new StreamWriter(encStream);

            // Write the plaintext to the stream.
            sw.WriteLine(PlainText);

            // Close the StreamWriter and CryptoStream.
            sw.Close();
            encStream.Close();

            // Get an array of bytes that represents
            // the memory stream.
            byte[] buffer = ms.ToArray();

            // Close the memory stream.
            ms.Close();

            // Return the encrypted byte array.
            return buffer;
        }
        #endregion

        #region 암호화 호출함수
        /// <summary>
        /// 실제 암호화 할 때 호출하는 함수
        /// </summary>
        /// <param name="inputvalue"></param>
        /// <returns></returns>
        public byte[] Des_Encrypt(string inputvalue)
        {
            string output;

            // Create a new DES key.
            DESCryptoServiceProvider key = new DESCryptoServiceProvider();

            key.Key = stringToByte(Key_String);
            key.IV = stringToByte(Key_String);

            // Encrypt a string to a byte array.
            byte[] buffer = Encrypt(inputvalue, key);

            return buffer;
        }
        #endregion

        #region 복호화 호출 함수 byte[] -> string
        /// <summary>
        /// 복호화를 위한 호출 함수
        /// </summary>
        /// <param name="inputvalue"></param>
        /// <returns></returns>
        public string Des_Dncrypt(byte[] inputvalue)
        {
            string output;

            // Create a new DES key.
            DESCryptoServiceProvider key = new DESCryptoServiceProvider();

            key.Key = stringToByte(Key_String);
            key.IV = stringToByte(Key_String);

            // Encrypt a string to a byte array.
            output = Decrypt(inputvalue, key);

            return output;
        }
        #endregion

Leave a Reply

Discover more from Dream big, Achieve more.

Subscribe now to keep reading and get access to the full archive.

Continue reading