티스토리 뷰

C#

[C#] Base64/Base64Url Encode, Decode

sonna 2020. 11. 2. 16:45
반응형

Java에 비해 C#은 암호와 복호화가 용이했던 기억이....

그런데 오랜만에 하려니 다 까먹어서 기록해 둔다 ㅠㅠ

 

1. 형변환 : byte[] to string, string to byte[]

- 출처 : zephie.tistory.com/11

- byte[] to string : string str = Encoding.Default.GetString(byte[]);

- string to byte[] : byte[] arrByte = Encoding.UTF8.GetBytes(string);

 

2. Base64Encode

- string str = Convert.ToBase64String(byte[]);

 

3. Base64Decode

- byte[] arrByte = Convert.FromBase64String(string);

 

4. Base64UrlEncode

- 참고사이트 : stackoverflow.com/questions/26353710/how-to-achieve-base64-url-safe-encoding-in-c

- Base64 암호화에다가 추가로 3개의 문자를 처리하는 과정이 실행된다. 

  ① + → - 로 치환

  ② / → _ 로 치환

  ③ = → 제거

- 복호화는 위의 3개의 문자를 반대로 처리한 후 Base64 복호화를 실행한다.

  ① - → + 로 치환

  ② _ → / 로 치환

  ③ = → 추가 (0~2개 까지만 추가된다.)

      *몇개를 추가할 것인가? Base64 문자열은 문자열 길이가 4의 배수여야 한다. 

       string.Length % 4 == 0 : 추가할 필요가 없다.

       string.Length % 4 == 2  : =을 2개 추가한다. 

       string.Length % 4 == 3  : =을 1개 추가한다. 

       string.Length % 4 == 1 : Base64 복호화를 할 수 없는 문자 (예외처리 한다 : throw new FormatException)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함