스크립트 자료실
자신이 만든 스크립트 혹은 다른 스크립트를 소개해 봅시다. 출저는 적으셔야겠죠? :)
어쩌다 관심이 생겨서 만들어 봤습니다.
따로 스크립트를 올리지는 않고 확장기능 안썼습니다. (솔직히 그거 좀 보기 힘들지 않나요..?)
텍스트를 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
}


일단 구동하는게 급급해서 더 간추릴 생각은 잘 안해봤습니다..
제 실력으론 이정도이려나요 ㅠ