■ BASE64 URL 인코딩/디코딩하기
------------------------------------------------------------------------------------------------------------------------
▶ 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 } }
|
▶ 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 } }
|
------------------------------------------------------------------------------------------------------------------------
'.NetCore > Common' 카테고리의 다른 글
[.NETCORE/COMMON] dotnet add package 명령 : 누겟 패키지 설치하기 (0) | 2020.11.03 |
---|---|
[.NETCORE/COMMON] dotnet sln add 명령 : 솔루션에 프로젝트 추가하기 (0) | 2020.11.03 |
[.NETCORE/COMMON] dotnet new sln 명령 : 솔루션 파일 생성하기 (0) | 2020.11.03 |
[.NETCORE/COMMON] 누겟 설치 : MySql.Data (0) | 2020.11.03 |
[.NETCORE/COMMON] 누겟 설치 : Npgsql (0) | 2020.11.03 |
[.NETCORE/COMMON] BASE64 URL 인코딩/디코딩하기 (0) | 2020.11.03 |
[.NETCORE/COMMON] 누겟 설치 : Microsoft.Extensions.Hosting (0) | 2020.10.27 |
[.NETCORE/COMMON] ILogger 인터페이스 : 콘솔에서 로그 생성하기 (0) | 2020.10.27 |
[.NETCORE/COMMON] SmtpClient 클래스 : Send 메소드를 사용해 메일 보내기 (0) | 2020.10.23 |
[.NETCORE/COMMON] 누겟 설치 : MailKit (0) | 2020.10.23 |
[.NETCORE/COMMON] IDisposable 인터페이스 사용하기 (0) | 2020.10.21 |
댓글을 달아 주세요