Classic ASP에서 C# .NET 어셈블리로 SHA256 해시 암호화 사용하기

Classic ASP에서 C# .NET 어셈블리로 SHA256 해시 암호화 사용하기

Classic ASP에서는 자체적으로 SHA256 해시 암호화를 제공하고 있지 않습니다. 따라서 Classic ASP에서 SHA256 해시 암호화를 사용하기 위해서는 별도의 라이브러리가 필요합니다. 다양한 언어로 라이브러리를 만들 수 있지만 이번 글에서는 C#으로 작성된 .NET 어셈블리를 이용하여 Classic ASP에서 SHA256 해시 암호화를 적용하는 방법에 대해 알아보겠습니다.

목차

1. C# 코드로 .NET 어셈블리 작성하기

C#으로 작성된 SHA256 해시 암호화 예제 코드입니다. SHA256Hasher라는 클래스를 포함하며 GenerateHash 메서드를 이용해 입력 문자열을 받아 암호화된 해시 값을 반환합니다. 이 클래스는 ComVisible, Guid 및 ClassInterface 속성을 사용하여 COM 개체로 작성되어 있습니다.


▼ 예제 코드

using System;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;

// 네임스페이스 설정
namespace SHA256Hasher
{
    // ComVisible, Guid 및 ClassInterface 속성을 사용하여 COM 개체로 작성
    [ComVisible(true)]
    [Guid("2024AE52-223E-44D6-8C28-9150AD59D771")]
    [ClassInterface(ClassInterfaceType.None)]

    public class SHA256Hasher
    {
        // GenerateHash 메서드 정의: 입력 문자열을 받아 SHA256 해시를 생성하고 반환함
        public string GenerateHash(string input)
        {
            // SHA256 인스턴스 생성
            using (SHA256 sha256 = SHA256.Create())
            {
                // 입력 문자열을 바이트 배열로 변환
                byte[] inputBytes = Encoding.UTF8.GetBytes(input);
                // 해시 계산
                byte[] hashedBytes = sha256.ComputeHash(inputBytes);

                // 해시 된 바이트를 16진수 문자열로 변환
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < hashedBytes.Length; i++)
                {
                    sb.Append(hashedBytes[i].ToString("x2"));
                }

                // 16진수 문자열 반환
                return sb.ToString();
            }
        }
    }
}

2. 어셈블리를 COM 개체로 등록하기

1. “sn.exe“를 사용하여 강력한 이름 키 파일을 생성합니다. 명령 프롬프트에서 다음 명령을 실행합니다.

▼ 예시로 “SHA256Key.snk”라는 키 파일을 생성하려면 다음 명령을 실행합니다.

sn.exe -k SHA256Key.snk
"sn.exe" 실행 파일을 사용하여 강력한 이름 키 파일을 생성합니다.


☞ “sn.exe” 파일 Visual Studio 2022 버전에서는 아래 경로에서 찾을 수 있습니다.

C:Program Files (x86)Microsoft SDKsWindowsv10.0AbinNETFX 4.8 Tools


2. 생성한 키 파일을 프로젝트 폴더에 복사합니다.

3. 프로젝트의 속성을 열어 강력한 이름 키 파일을 지정합니다. 이를 위해 “AssemblyInfo.cs” 파일을 열어 “AssemblyKeyFile” 속성에 키 파일의 이름과 경로를 등록합니다.

프로젝트의 속성을 열어 강력한 이름 키 파일을 지정합니다.


4. 어셈블리를 빌드하여 DLL 파일을 생성합니다.

5. “RegAsm.exe“를 사용하여 어셈블리를 COM 개체로 등록합니다.

"RegAsm.exe"를 사용하여 어셈블리를 COM 개체로 등록합니다.


☞ “RegAsm.exe” 실행 파일은 일반적으로 아래 경로에서 찾을 수 있습니다.
C:WindowsMicrosoft.NETFrameworkv4.0.30319
단, .NET Framework 버전이 다를 경우 경로가 약간 다를 수 있으니 참고하세요.

3. Classic ASP에서 COM 개체 사용하기

Classic ASP에서 작성한 COM 개체를 사용합니다. 다음 코드는 Classic ASP에서 SHA256Hasher 객체를 생성하고 GenerateHash 메서드를 호출하여 암호화된 해시 값을 출력합니다.


1. 예제 코드

<%
    On Error Resume Next ' 오류가 발생할 경우 다음 줄로 이동

    Dim hasher
    Set hasher = Server.CreateObject("SHA256Hasher.SHA256Hasher") ' SHA256Hasher 객체 생성

    Dim input, hash
    input = "BlueShare!" ' 입력 문자열
    hash = hasher.GenerateHash(input) ' 입력 문자열에 대한 SHA256 해시 생성

    If Err.Number <> 0 Then ' 오류가 발생한 경우
    Response.Write "Error: " & Err.Description ' 오류 메시지 출력
    Err.Clear ' 오류 상태 초기화
    Else
    Response.Write "Hash: " & hash ' 해시 값 출력
    End If

    Set hasher = Nothing ' 객체 해제
%>


2. 실행 결과 화면

Classic ASP에서 COM 개체 사용한 예제 코드 실행 결과 화면입니다.


이 글이 도움이 되셨다면 공유를 부탁 드립니다. 다음 글에서 뵙겠습니다!

관련 이전 게시글

Classic ASP에서 FileSystemObject를 이용한 로그 파일 작성하기

Classic ASP에서 CDO를 사용하여 이메일 발송하기

Classic ASP에서 XMLHTTP를 사용한 JSON 통신: 예제 코드 및 구현 방법