첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

TestProject.zip
다운로드

▶ Program.cs

using System;
using System.Text;

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

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

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        /// <param name="argumentArray">인자 배열</param>
        private static void Main(string[] argumentArray)
        {
            // JWT PAYLOAD
            string source = "eyJzdWIiOiJJRDAwMDEiLCJiaXJ0aGRhdGUiOiIxOTkwLTAxLTAxIiwiZW1haWwiOiJ0ZXN0QGRhdW0ubmV0IiwiZ2VuZGVyIjoi" +
                            "TWFsZSIsIkNvbXBhbnlHcm91cCI6IuyYgeyXhTHqt7jro7kiLCJDb21wYW55RGVwYXJ0bWVudCI6IuyYgeyXhTHtjIAiLCJDb21w" +
                            "YW55VGl0bGUiOiLrjIDrpqwiLCJFbXBsb3llZUlEIjoiRU1QMDAwMSIsIkVtcGxveWVlTmFtZSI6Iu2Zjeq4uOuPmSIsIm5iZiI6" + 
                            "MTYwNDMzMDM2OSwiZXhwIjoxNjA0MzMwMzY5LCJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo0NDMwMC8iLCJhdWQiOiJodHRwczov" +
                            "L2xvY2FsaG9zdDo0NDMwMC8ifQ";

            byte[] targetByteArrat = Base64URLEncodingHelper.Decode(source);

            string target = Encoding.UTF8.GetString(targetByteArrat);

            Console.WriteLine(target);
        }

        #endregion
    }
}

 

728x90

 

▶ Base64URLEncodingHelper.cs

using System;

namespace TestProject
{
    /// <summary>
    /// BASE64 URL 인코딩 헬퍼
    /// </summary>
    public static class Base64URLEncodingHelper
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Public

        #region 인코딩하기 - Encode(sourceByteArray)

        /// <summary>
        /// 인코딩하기
        /// </summary>
        /// <param name="sourceByteArray">소스 바이트 배열</param>
        /// <returns>BASE64 문자열</returns>
        public static string Encode(byte[] sourceByteArray)
        {
            if(sourceByteArray == null)
            {
                throw new ArgumentNullException("sourceByteArray");
            }

            return Convert.ToBase64String(sourceByteArray).TrimEnd('=').Replace('+', '-').Replace('/', '_');
        }

        #endregion
        #region 디코딩하기 - Decode(source)

        /// <summary>
        /// 디코딩하기
        /// </summary>
        /// <param name="source">BASE64 문자열</param>
        /// <returns>바이트 배열</returns>
        public static byte[] Decode(string source)
        {
            if(source == null)
            {
                throw new ArgumentNullException("source");
            }

            return Convert.FromBase64String(SetBase64Padding(source.Replace('-', '+').Replace('_', '/')));
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////// Private

        #region BASE64 패딩 설정하기 - SetBase64Padding(source)

        /// <summary>
        /// BASE64 패딩 설정하기
        /// </summary>
        /// <param name="source">소스 문자열</param>
        /// <returns>BASE64 패딩 적용 문자열</returns>
        private static string SetBase64Padding(string source)
        {
            int padding = 3 - ((source.Length + 3) % 4);

            if(padding == 0)
            {
                return source;
            }

            return source + new string('=', padding);
        }

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

댓글을 달아 주세요