SEED 암호화 컴포넌트 ECPlaza.Seed 소스 공개

한국정보진흥원(KISA)의 SEED 암호알고리즘을 ASP에서 사용하기 위해서 만든 ECPlaza.Seed 컴포넌트의 소스를 공개합니다. 이 컴포넌트는 ANSI X.923 패딩을 사용했고, BASE64 인코딩 절차를 한번 더 거쳤습니다.

사용법은 간단합니다.

ECPlazaSeed.dll을 다운로드 받은 다음 적당한 폴더에 복사한뒤 관리자 권한으로 도스창을 실행시켜서

regsvr32 ECPlazaSeed.dll

64bit OS에서는

c:\windows\syswow64\regsvr32 ECPlazaSeed.dll

을 하면 컴포넌트 등록이 끝납니다.

등록 확인은 테스트 스크립트를 다운 받아서

cscript test.vbs

64bit OS에서는

c:\windows\syswow64\cscript test.vbs

를 도스창에서 실행해서 오류가 발생하지 않으면 제대로 등록이 된 겁니다.

이 컴포넌트는 두개의 메쏘드를 제공합니다.

  • Encrypt(sPlainText, sKey)

    sPlainText 평서문을 sKey를 가지고 SEED 암호화 및 Base64 인코딩한 결과를 반환합니다. sKey는 반드시 16자리여야만 합니다.

  • Decrypt(sCipherText, sKey)

    sCipherText 암호문을 Base64 디코딩을 하고, SEED 복호화를 거쳐서 원 평서문을 반환합니다.

사용 예제

Dim oSeed
Dim encdata, decdata
Set oSeed = Server.CreateObject("ECPlaza.Seed")
encdata = oSeed.Encrypt(data, userkey)
decdata = oSeed.Decrypt(encdata, userkey)

소스를 컴파일 하기 위해서는 Visual C++ 6가 필요합니다. Visual Stuio .Net에서는 컴파일 해보지 않았습니다. 아마 컴파일이 안 될것 같습니다.

소스 다운로드

DLL 다운로드

테스트 스크립트 test.vbs

참고:

한국정보진흥원 SEED 알고리즘

SEED 알고리즘 – Java API
Seed알고리즘을 이용한 암호화 복호화 기능 수행하는 DLL 만들기

ASP: MSXML2.ServerXMLHTTP 사용하여 원격 웹서버 내용 갖고 오기

HTTP를 구현해 놓은 여러 컴포넌트들이 있지만 윈도우2000부터 기본으로 설치되는 MSXML2.ServerXMLHTTP 컴포넌트를 이용하여 원격 웹서버의 내용을 갖고 올수 있다.

가장 기본적인 방법은 다음과 같다.

<%  
sUrl = "http://www.ecplaza.net/"  
set oHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")  
oHttp.Open "GET", sUrl, False  
oHttp.Send ""  
Response.Write oHttp.ResponseText  
Set oHttp = Nothing  
%>  

GET 방법으로 갖고 온 HTML을 화면에 출력하는 루틴이다. POST 방법으로도 요청할 수 있다.

<%  
sUrl = "http://river.ecplaza.net/form.asp"  
set oHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")  
oHttp.Open "POST", sUrl, False  
oHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"  
oHttp.Send "subject=test&contents=message+body"  
Response.Write oHttp.ResponseText  
Set oHttp = Nothing  
%>  

오류 처리는 Send 메쏘드를 호출하기 전에  On Error Resume Next를 적어주고 오류발생 여부를 체크하면 된다.

<%  
sUrl = "http://river.ecplaza.net/form.asp"  
set oHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")  
oHttp.Open "POST", sUrl, False  
oHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

On Error Resume Next

oHttp.Send "subject=test&contents=message+body"  
If Err Then  
Response.Write "Error:" & oHttp.ParseError.URL & "<br>" & _  
oHttp.ParseError.Reason  
Else  
Response.Write oHttp.ResponseText  
End If  
Set oHttp = Nothing  
%>  

ASP: XSS방지를 위한 htmlspecialchars 함수

XSS방지를 위해 PHP에서는 htmlspecialchars함수를 사용하면 된다. ASP에서는 기본적으로 이런 기능의 함수가 없어서 같은 기능을 하는 함수를 만들었다. 사용자 입력 내용이 HTML로 출력될 때는 XSS방지를 위해서 반드시 htmlspecialchars함수를 써야 한다.

<form method="post" action="test.asp">  
<input type="text" name="test" value="<%=htmlspecialchars(Request("test"))%>">  
<input type="submit">  
</form>

<%  
Function htmlspecialchars(sStr)  
    htmlspecialchars = Replace( sStr, "&", "&" )  
    htmlspecialchars = Replace( htmlspecialchars, ">", ">" )  
    htmlspecialchars = Replace( htmlspecialchars, "<", "<" )  
    htmlspecialchars = Replace( htmlspecialchars, """", "&quot;" )  
    htmlspecialchars = Replace( htmlspecialchars, "'", "&#039;" )  
End Function  
%>