스크립트 자료실

자신이 만든 스크립트 혹은 다른 스크립트를 소개해 봅시다. 출저는 적으셔야겠죠? :)

Base64 인코딩, 디코딩 알리아스..

조회 수 328 추천 수 0 2012.01.21 03:36:02

어쩌다 관심이 생겨서 만들어 봤습니다.


따로 스크립트를 올리지는 않고 확장기능 안썼습니다. (솔직히 그거 좀 보기 힘들지 않나요..?)


텍스트를 base64 로 인코딩, 디코딩해줍니다.


인코딩은 $base64(text) 이며 디코딩은 $base64.decode(text) 입니다.


인터넷에서 알고리즘 찾다가 다들 한글이 깨진다고하길래 저도 다 만들고 나서 한글처리 하려했더니


문제없이 잘 되네요 ㄷㄷ 는 이상하게 별다른 오류는 없습니다. 하지만 문제가 있어야 정상이니


한글을 처리하고 싶으시면 한글을 utf-8로 인코딩해준다음 입력하면 됩니다.


base64 {

  ;; base64로 인코딩해주는 알리아스이다. 텍스트를 아스키코드로 바꾸고 2진수로 변환, 6비트로 가르고 10진수로 변환하여 테이블 매핑 하면된다.


  var %text = $1

  var %i = 1

  var %z = $len(%text) 


  if ($calc( $len(%text) % 3) == 1) var %z = $calc($len(%text) + 2)

  if ($calc( $len(%text) % 3) == 2) var %z = $calc($len(%text) + 1)


  ;; 결과값을 인코딩 시켜줄때 쓰이는 테이블.

  var %base64.table = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/


  while %i <= %z {


    ;; 이진수로 바꿈

    var %asc.base2 = %asc.base2 $+ $base($iif($asc($mid(%text,%i,1)),$ifmatch,0),10,2,8)


    if ($calc(%i % 3) == 0) {


      ;;Base64 는 문자3개를 4개의 인코딩문자로 바꿔주는것이기 때문에 인코딩문자가 4의배수가 아닐경우 그 나머지만큼을 =로 추가해준다.


      var %asc.first = $mid(%base64.table,$calc($base($mid(%asc.base2,1,6),2,10,1) + 1),1)

      var %asc.second = $mid(%base64.table,$calc($base($mid(%asc.base2,7,6),2,10,1) + 1),1)

      var %asc.third = $mid(%base64.table,$calc($base($mid(%asc.base2,13,6),2,10,1) + 1),1)

      var %asc.fourth = $mid(%base64.table,$calc($base($mid(%asc.base2,19,6),2,10,1) + 1),1)


      if ($mid(%text,$calc(%i - 1),1) == $null) var %asc.encode = %asc.encode $+ %asc.first $+ %asc.second $+ $iif(%asc.third != A,$ifmatch,=) $+ $iif(%asc.fourth != A,$ifmatch,=)

      else if ($mid(%text,%i,1) == $null) var %asc.encode = %asc.encode $+ %asc.first $+ %asc.second $+ %asc.third $+ $iif(%asc.fourth != A,$ifmatch,=)

      else var %asc.encode = %asc.encode $+ %asc.first $+ %asc.second $+ %asc.third $+ %asc.fourth


      var %asc.base2 = $null


    }


    inc %i


  }



  ;; 리턴해주는곳.

  return %asc.encode


}


base64.decode {


  var %text = $1

  var %i = 1


  while %i <= $len(%text) {


    var %get = $mid(%text,%i,1)

    var %get.6bit = $replacexcs(%get,A,0,B,1,C,2,D,3,E,4,F,5,G,6,H,7,I,8,J,9,K,10,L,11,M,12,N,13,O,14,P,15,Q,16,R,17,S,18,T,19,U,20,V,21,W,22,X,23,Y,24,Z,25,a,26,b,27,c,28,d,29,e,30,f,31,g,32,h,33,i,34,j,35,k,36,l,37,m,38,n,39,o,40,p,41,q,42,r,43,s,44,t,45,u,46,v,47,w,48,x,49,y,50,z,51,0,52,1,53,2,54,3,55,4,56,5,57,6,58,7,59,8,60,9,61,+,62,/,63,=,0)


    ; ↓이거로도 할수있다. 근데 뭔가 더 지저분해보인다.

    ;var %get.6bit = $iif(%get == $chr(61),0,$iif(%get == /,63,$iif(%get == +,62,$iif(%get isnum 0-9,$calc($asc(%get) + 4),$iif(%get isupper,$calc($asc(%get) - 65),$iif(%get islower,$calc($asc(%get) - 71),%get)))))))


    var %get.base2 = %get.base2 $+ $base(%get.6bit,10,2,6)


    if ($calc(%i % 4) == 0) {


      var %get.first = $chr($base($mid(%get.base2,1,8),2,10,1))

      var %get.second = $chr($base($mid(%get.base2,9,8),2,10,1))

      var %get.third = $chr($base($mid(%get.base2,17,8),2,10,1))


      if (%get == $chr(61)) var %get.decode = %get.decode $+ %get.first $+ $iif(%get.second,$ifmatch) $+ $iif(%get.third,$ifmatch)

      else var %get.decode = %get.decode $+ %get.first $+ $iif(%get.second,$ifmatch,0) $+ $iif(%get.third,$ifmatch,0) 


      var %get.base2 = $null


    }


    inc %i


  }


  return %get.decode


}



[레벨:2]유카리코

2012.01.21 03:47:10
*.75.70.57

일단 구동하는게 급급해서 더 간추릴 생각은 잘 안해봤습니다..

제 실력으론 이정도이려나요 ㅠ

[레벨:4]id: 공유

2012.01.25 01:39:06
*.231.199.25

...

$encode(abcd,m)

$decode(YWJjZA==,m)

[레벨:2]유카리코

2012.01.25 18:36:59
*.75.70.57

이럴수가 ㅋㅋ 좋은정보 알아갑니다.ㅋㅋ

[레벨:4]세류

2012.02.14 15:25:31
*.139.105.37

ㅊㄱㅅ

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 구문강조 사용법 file [5] [레벨:4]이아우 2009-12-14 20252
» Base64 인코딩, 디코딩 알리아스.. [4] [레벨:2]유카리코 2012-01-21 328
619 sebin 소켓봇 file [레벨:1]世彬_ 2011-12-28 563
618 닉 뒤에 부가설명 붙이기 [3] [레벨:0]Beres 2011-11-28 892
617 ame거부스크립트와 허용스크립트 file [7] [레벨:0]유비와 2011-11-10 1275
616 cp949<->utf8 convert dll file [1] [레벨:0]nori 2011-07-26 2921
615 mIRC 7.19 korean file [4] [레벨:3]지오 2011-06-28 4191
614 알람스크립트 file [1] [레벨:1]이루릴 2011-05-03 2917
613 도량형,진법변환 스크립트 file [레벨:1]아흐리만 2011-04-24 2744
612 스크린샷 스크립트 by 늘모 file [4] [레벨:4]늘모 2010-12-31 4274
611 카운터 [4] [레벨:3]베이스 2010-12-02 3037
610 스샷dll file [레벨:4]늘모 2010-11-30 4019
609 시_련♡ 빵글이 작품 (수정본) file [레벨:1]시_련♡ 2010-10-21 3601
608 첫 작품 "_" ~_~ file [6] [레벨:1]시_련♡ 2010-10-07 3401
607 keyhook.dll file [2] [레벨:4]늘모 2010-09-18 4044
606 mSE.dll (mIRC Scripts Editor DLL) file [1] [레벨:3]지오 2010-08-24 3555
605 (노트북) 배터리 구해오는 스크립트 (2010-12-12 수정) file [2] [레벨:0]모그422 2010-07-13 3112
604 소켓봇 스크립트의 기본 뼈대 [레벨:1]이루릴 2010-07-01 3774
603 ZEROIRC 에서 추출해낸 Cool MP3 1.01 file [5] [레벨:0]재롱이 2010-05-30 3835
602 트위터 하시는분은 없나요? file [4] [레벨:4]늘모 2010-05-23 3272
601 본격 기념 스크립트 - 워3 래더 성적 조회 file [레벨:4]늘모 2010-04-13 3336



XE Login