첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
다운로드

▶ Program.cs

using System;
using System.Runtime.InteropServices;
using System.Security;

namespace TestProject
{
    /// <summary>
    /// 프로그램
    /// </summary>
    class Program
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 프로그램 시작하기 - Main()

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        private static void Main()
        {
            string source = "테스트";

            SecureString secureString = GetSecureString(source);

            string target = GetString(secureString);

            Console.WriteLine(source);
            Console.WriteLine(target);
        }

        #endregion

        #region 보안 문자열 구하기 - GetSecureString(source)

        /// <summary>
        /// 보안 문자열 구하기
        /// </summary>
        /// <param name="source">소스 문자열</param>
        /// <returns>보안 문자열</returns>
        private static SecureString GetSecureString(string source)
        {
            if(string.IsNullOrWhiteSpace(source))
            {
                return null;
            }

            SecureString target = new SecureString();

            foreach(char character in source)
            {
                target.AppendChar(character);
            }

            return target;
        }

        #endregion
        #region 문자열 구하기 - GetString(source)

        /// <summary>
        /// 문자열 구하기
        /// </summary>
        /// <param name="source">소스 보안 문자열</param>
        /// <returns>문자열</returns>
        private static string GetString(SecureString source)
        {
            IntPtr targetHandle = IntPtr.Zero;

            try
            {
                targetHandle = Marshal.SecureStringToGlobalAllocUnicode(source);

                return Marshal.PtrToStringUni(targetHandle);
            }
            finally
            {
                Marshal.ZeroFreeGlobalAllocUnicode(targetHandle);
            }
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요