[RUST/COMMON] 크레이트 설치 : base64
■ base64 크레이트를 설치하는 방법을 보여준다. ▶ Cargo.toml
1 2 3 4 5 6 |
... [dependencies] base64 = "0.13.0" |
■ base64 크레이트를 설치하는 방법을 보여준다. ▶ Cargo.toml
1 2 3 4 5 6 |
... [dependencies] base64 = "0.13.0" |
■ Convert 클래스의 TryFromBase64String 정적 메소드를 사용해 BASE64 문자열 여부를 구하는 방법을 보여준다. ▶ Convert 클래스 : TryFromBase64String 정적 메소드를 사용해 BASE64
■ BASE64 문자열 여부를 구하는 방법을 보여준다. ▶ BASE64 문자열 여부 구하기 예제 (C#)
1 2 3 4 5 |
string source = "TNGkwrjSIAA4u5DH9MU="; // 테스트 문자열 Console.WriteLine(IsBase64String(source)); |
▶ BASE64 문자열 여부 구하기 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
#region BASE64 문자열 여부 구하기 - IsBase64String(source) /// <summary> /// BASE64 문자열 여부 구하기 /// </summary> /// <param name="source">소스 문자열</param> /// <returns>BASE64 문자열 여부</returns> public bool IsBase64String(string source) { if(source == null || source.Length == 0 || source.Length % 4 != 0 || source.Contains(' ') || source.Contains('\t') || source.Contains('\r') || source.Contains('\n')) { return false; } int index = source.Length - 1; if(source[index] == '=') { index--; } if(source[index] == '=') { index--; } for(int i = 0; i <= index; i++) { if(Validate(source[i])) { return false; } } return true; } #endregion #region 무결성 검증하기 - Validate(source) /// <summary> /// 무결성 검증하기 /// </summary> /// <param name="source">소스 문자</param> /// <returns>무결성 검증 결과</returns> private bool Validate(char source) { int value = (int)source; if(value >= 48 && value <= 57) { return false; } if(value >= 65 && value <= 90) { return false; } if(value >= 97 && value <= 122) { return false; } return value != 43 && value != 47; } #endregion |
■ Regex 클래스의 IsMatch 정적 메소드를 사용해 BASE64 문자열 여부를 구하는 방법을 보여준다. ▶ Regex 클래스 : IsMatch 정적 메소드를 사용해 BASE64
■ Image 클래스를 사용해 BASE64 문자열에서 이미지를 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
using System; using System.Drawing; using System.IO; #region 이미지 구하기 - GetImage(base64String) /// <summary> /// 이미지 구하기 /// </summary> /// <param name="base64String">BASE64 문자열</param> /// <returns>이미지</returns> public Image GetImage(string base64String) { byte[] byteArray = Convert.FromBase64String(base64String); using(MemoryStream stream = new MemoryStream(byteArray)) { Image image = Image.FromStream(stream); return image; } } #endregion |
■ BASE64 URL을 인코딩/디코딩하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
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 } } |
TestProject.zip
■ BASE64 문자열을 인코딩/디코깅하는 방법을 보여준다. ▶ BASE64 문자열 인코딩/디코깅 하기 예제 (VB)
1 2 3 4 5 6 7 8 9 |
Dim strBase64 As String strBase64 = GetBase64String(StrConv("테스트 문자열", vbFromUnicode)) Print strBase64 Print StrConv(GetUnicodeString(strBase64), vbUnicode) |
1. 프로젝트 / 참조 메뉴를 클릭한다. 2. 참조
■ Convert 클래스의 ToBase64String 정적 메소드를 사용해 BASE64 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System; using System.IO; #region BASE64 문자열 구하기 - GetBase64String(filePath) /// <summary> /// BASE64 문자열 구하기 /// </summary> /// <param name="filePath">파일 경로</param> /// <returns>BASE64 문자열</returns> public string GetBase64String(string filePath) { FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); byte[] bufferByteArray = new byte[fileStream.Length]; fileStream.Read(bufferByteArray, 0, (int)fileStream.Length); MemoryStream memoryStream = new MemoryStream(bufferByteArray); string base64String = Convert.ToBase64String(memoryStream.ToArray()); memoryStream.Close(); return base64String; } #endregion |