728x90
반응형
728x170
▶ 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
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON/.NETCORE] dotnet add package 명령 : 누겟 패키지 설치하기 (0) | 2020.11.03 |
---|---|
[C#/COMMON/.NETCORE] dotnet sln add 명령 : 솔루션에 프로젝트 추가하기 (0) | 2020.11.03 |
[C#/COMMON/.NETCORE] dotnet new sln 명령 : 솔루션 파일 생성하기 (0) | 2020.11.03 |
[C#/COMMON/.NETCORE] 누겟 설치 : MySql.Data (0) | 2020.11.03 |
[C#/COMMON/.NETCORE] 누겟 설치 : Npgsql (0) | 2020.11.03 |
[C#/COMMON/.NETCORE] 누겟 설치 : Microsoft.Extensions.Hosting (0) | 2020.10.27 |
[C#/COMMON/.NETCORE] ILogger 인터페이스 : 콘솔에서 로그 생성하기 (0) | 2020.10.27 |
[C#/COMMON] DirectoryInfo 클래스 : Delete 메소드를 사용해 하위 디렉토리 및 파일 포함 디렉토리 삭제하기 (0) | 2020.10.24 |
[C#/COMMON] DirectoryInfo 클래스 : Create 메소드를 사용해 하위 디렉토리 일괄 생성하기 (0) | 2020.10.24 |
[C#/COMMON/.NETCORE] SmtpClient 클래스 : Send 메소드를 사용해 메일 보내기 (0) | 2020.10.23 |
댓글을 달아 주세요