ASP에서 C# 언어로 만든 DLL 호출

ASP에서 .net 코드를 불러 사용하면 매우 편리하다.

얼마 전 AES 암호화 알고리즘을 ASP에서 사용해야 할 일이 있었는데 ASP 자체에서 사용하려니 막히는 부분이 너무 많아 AES 함수를 C# 언어로 작성 하였고 해당 파일을 DLL 파일로 빌드하여 ASP에서 불러 사용하는 방식으로 작업을 하였다.

오늘은 C# 언어로 작성된 파일을 ASP에서 사용하는 방법으로 기술하고자 한다.

새 프로젝트를 시작하자.

image
Visual C#>Class Library를 선택 후 Name에 적당한 이름을 입력한다.

image

Add Refrence…를 선택
image

System.EnterpriseServices 선택
image

image
AssemblyInfo.cs파일을 열고 [assembly: ComVisible(true)] 로 변경

image
Class1.cs –> AES.cs

using System;

using System.Collections.Generic;

using System.Text;

using System.EnterpriseServices;

using System.Security.Cryptography;

[assembly: ApplicationName("coolsharpAES")]

[assembly: Description("coolsharp AES")]

[assembly: ApplicationActivation(ActivationOption.Server)]

[assembly: ApplicationAccessControl(false)]

 

namespace TestClass

{

    public class AES : ServicedComponent

    {

        public string Encrypt(string toEncrypt, string key)

        {

            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);

            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

 

            RijndaelManaged rDel = new RijndaelManaged();

            rDel.Key = keyArray;

            rDel.Mode = CipherMode.ECB;

            rDel.Padding = PaddingMode.PKCS7;

 

            ICryptoTransform cTransform = rDel.CreateEncryptor();

            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

 

            return Convert.ToBase64String(resultArray, 0, resultArray.Length);

        }

 

        public string Decrypt(string toDecrypt, string key)

        {

            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);

            byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);

 

            RijndaelManaged rDel = new RijndaelManaged();

            rDel.Key = keyArray;

            rDel.Mode = CipherMode.ECB;

            rDel.Padding = PaddingMode.PKCS7;

 

            ICryptoTransform cTransform = rDel.CreateDecryptor();

            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

 

            return UTF8Encoding.UTF8.GetString(resultArray);

        }

    }

}



이로서 기본적인 코딩 작업은 끝났다.



참으로 간단하지 않은가?



단 이것을 서버로 배포하기 전에 몇 가지 사항이 존재한다.



사이닝을 하자.





배포하기전에 강력한 이름 키 생성을 해야 한다.

image



속성창에서 사이닝 탭을 클릭하자.

image



키 이름을 지정하고 암호는 입력하지 말자.

image


체크를 해제한다.

image



확인 버튼을 클릭하면 coolsharpAES.snk 파일이 생성되었음을 알 수 있다.

image



이로서 dll 파일이 생성 되었음을 알 수 있다.



COM+로 등록하자.





.net 서비스를 COM+로 등록하는 방법은 다음과 같다.



비스타 이상 계열에서는 UAC 인증이 필요하므로 command prompt 창을 띄울 때 관리자 권한으로 띄운다.



regasm명령을 실행한다.

image



regsvcs명령을 실행한다.

image



이로서 서비스 등록이 완료 되었다.



확인을 위해서는 구성 요소 서비스에서 확인할 수 있다.

image



이제 웹에서 사용해 보자.





<%

set Com = server.createobject("TestClass.AES")

encodeStr = Com.Encrypt("coolsharp", "00000000000000000000000000000000")

Response.Write "Encript : " & encodeStr & "<br/>"

Response.Write "Decript : " & Com.Decrypt(encodeStr, "00000000000000000000000000000000") & "<br/>"

%>


ASP 소스 코드를 입력하고 웹에서 실행하면 다음과 같은 화면이 나온다.

image



이로서 강좌를 마친다.

2012-11-21 추가
8000401a 에러 발생 시
http://classicasp.aspfaq.com/components/why-do-i-get-8000401a-errors.html
참조하자.

댓글

이 블로그의 인기 게시물

ViewPager offscreenPageLimit 메모리 상태

eskimo esim 사용기 - 일본 / 오사카(23/08/06 ~ 23/08/08)

「항목은 사용 중이기 때문에 작업을 완료할 수 없습니다.」에러 메시지 발생 후 파일 지워지지 않는 문제 해결