ASP에서 C# 언어로 만든 DLL 호출
ASP에서 .net 코드를 불러 사용하면 매우 편리하다.
얼마 전 AES 암호화 알고리즘을 ASP에서 사용해야 할 일이 있었는데 ASP 자체에서 사용하려니 막히는 부분이 너무 많아 AES 함수를 C# 언어로 작성 하였고 해당 파일을 DLL 파일로 빌드하여 ASP에서 불러 사용하는 방식으로 작업을 하였다.
오늘은 C# 언어로 작성된 파일을 ASP에서 사용하는 방법으로 기술하고자 한다.
새 프로젝트를 시작하자.
Visual C#>Class Library를 선택 후 Name에 적당한 이름을 입력한다.
Add Refrence…를 선택
System.EnterpriseServices 선택
AssemblyInfo.cs파일을 열고 [assembly: ComVisible(true)] 로 변경
Class1.cs –> AES.cs
이로서 기본적인 코딩 작업은 끝났다.
참으로 간단하지 않은가?
단 이것을 서버로 배포하기 전에 몇 가지 사항이 존재한다.
사이닝을 하자.
배포하기전에 강력한 이름 키 생성을 해야 한다.
속성창에서 사이닝 탭을 클릭하자.
키 이름을 지정하고 암호는 입력하지 말자.
체크를 해제한다.
확인 버튼을 클릭하면 coolsharpAES.snk 파일이 생성되었음을 알 수 있다.
이로서 dll 파일이 생성 되었음을 알 수 있다.
COM+로 등록하자.
.net 서비스를 COM+로 등록하는 방법은 다음과 같다.
비스타 이상 계열에서는 UAC 인증이 필요하므로 command prompt 창을 띄울 때 관리자 권한으로 띄운다.
regasm명령을 실행한다.
regsvcs명령을 실행한다.
이로서 서비스 등록이 완료 되었다.
확인을 위해서는 구성 요소 서비스에서 확인할 수 있다.
이제 웹에서 사용해 보자.
ASP 소스 코드를 입력하고 웹에서 실행하면 다음과 같은 화면이 나온다.
이로서 강좌를 마친다.
2012-11-21 추가
8000401a 에러 발생 시
http://classicasp.aspfaq.com/components/why-do-i-get-8000401a-errors.html
참조하자.
얼마 전 AES 암호화 알고리즘을 ASP에서 사용해야 할 일이 있었는데 ASP 자체에서 사용하려니 막히는 부분이 너무 많아 AES 함수를 C# 언어로 작성 하였고 해당 파일을 DLL 파일로 빌드하여 ASP에서 불러 사용하는 방식으로 작업을 하였다.
오늘은 C# 언어로 작성된 파일을 ASP에서 사용하는 방법으로 기술하고자 한다.
새 프로젝트를 시작하자.
Visual C#>Class Library를 선택 후 Name에 적당한 이름을 입력한다.
Add Refrence…를 선택
System.EnterpriseServices 선택
AssemblyInfo.cs파일을 열고 [assembly: ComVisible(true)] 로 변경
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);
}
}
}
이로서 기본적인 코딩 작업은 끝났다.
참으로 간단하지 않은가?
단 이것을 서버로 배포하기 전에 몇 가지 사항이 존재한다.
사이닝을 하자.
배포하기전에 강력한 이름 키 생성을 해야 한다.
속성창에서 사이닝 탭을 클릭하자.
키 이름을 지정하고 암호는 입력하지 말자.
체크를 해제한다.
확인 버튼을 클릭하면 coolsharpAES.snk 파일이 생성되었음을 알 수 있다.
이로서 dll 파일이 생성 되었음을 알 수 있다.
COM+로 등록하자.
.net 서비스를 COM+로 등록하는 방법은 다음과 같다.
비스타 이상 계열에서는 UAC 인증이 필요하므로 command prompt 창을 띄울 때 관리자 권한으로 띄운다.
regasm명령을 실행한다.
regsvcs명령을 실행한다.
이로서 서비스 등록이 완료 되었다.
확인을 위해서는 구성 요소 서비스에서 확인할 수 있다.
이제 웹에서 사용해 보자.
<%
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 소스 코드를 입력하고 웹에서 실행하면 다음과 같은 화면이 나온다.
이로서 강좌를 마친다.
2012-11-21 추가
8000401a 에러 발생 시
http://classicasp.aspfaq.com/components/why-do-i-get-8000401a-errors.html
참조하자.
댓글
댓글 쓰기