2009-11-03 7 views
0

특정 문자열에서 MD5를 사용하여 해시 및 암호화를 수행하는 작동하는 .NET 웹 응용 프로그램이 있습니다. 이 문자열은 쿠키에 저장됩니다.ASP 클래식 및 .NET의 MD5

문제는 내가이 쿠키를 ASP 고전 응용 프로그램에서 유효성을 검사해야합니다.

내가 아는 바로는 ASP 클래식에 암호화 공급자가 내장되어 있지 않으므로 MD5 알고리즘을 직접 구현하여 복사/작성해야 할 수 있습니다.

오픈 소스를 사용할 준비가 되었습니까? (전 세계에 문자열을 보내고 싶지 않습니다.) .NET과 호환됩니까?

답변

3

유효성 검사를 수행하고 ASP에서 호출하는 데 필요한 바이트가있는 .net DLL을 만드십시오! Exposing .NET Components to COM

+0

나는 이런 종류의 솔루션에 대해서도 생각하고 있으며, 논리 프로세스를 .NET 코드로 오프 로딩합니다. 실적에 대한 비교가 있습니까? 이 코드는 매우 자주 실행되며 전체 응용 프로그램에 매우 중요합니다. –

+0

ASP에서 .NET 객체를 호출 할 때의 성능을 의미합니까? 내 경험으로는 무시할 만하지만 측정해야합니다. –

1

VBScript를 MD5에 대한 빠른 웹 검색은 많은

오히려 컷 이상을 설정하고, 닷넷 암호화 네임 스페이스의 대부분 here

+0

* 로트 *가 있다는 것을 알고 있습니다. .NET 구현시 다른 결과를 반환하는 클래스가 있습니다. –

+1

.NET에서 유니 코드를 사용하고 있으며 VBScript는 ASCII를 사용하고있었습니다. – blowdart

+0

나는 ASCIIEncoder를 사용하여 문자열 객체를 byte []로 변환했다. –

2

은 그냥 내가 찾은 좋은 일이었다 붙여 넣기 Windows 'CryptoAPI를 둘러싼 래퍼 (wrapper)를 사용하면 직접 작업 할 수도 있지만 고통이 될 수 있습니다. 이 페이지가 도움이 될 수 있습니다 ... http://www.codeproject.com/KB/asp/adrian_bacaianu.aspx

+0

흥미로운 솔루션이지만 배치가 조금 번거 롭습니다. 가치가있다. –

1

당신이 원하는 언어가 VBScript를 (또는 뭔가 다른) 경우에도, 기존 ASP에서 자바 스크립트를 사용할 수 있습니다 여기에

는 방법이다.

자바로 구현 된 Google Closure library에는 MD5 해시 클래스가 포함되어 있습니다. Closure lib는 Apache Source License를 통해 라이센스되므로 누구나 자유롭게 수정하고 다시 사용할 수 있습니다.

Here is a version 해당 Closure 전제 조건없이 사용할 수 있도록 수정 된 MD5 해시입니다. 당신은 다음과 같이 사용할 수 있습니다 :

// extension to the string object 
if (typeof String.prototype.toMd5 != 'function') { 
    String.prototype.toMd5 = function() { 
     var s = this, bytes = [], i, L = s.length, c, 
      md5, hash; 
     // assume all 8-bit chars (eg, ascii, IBM-437, etc); 
     // take lower 8 bits of each string char. 
     for (i = 0; i < L; ++i) { 
      c = s.charCodeAt(i); 
      bytes.push(c & 255); 
     } 
     md5 = new Md5(); 
     md5.update(bytes); 
     hash = md5.digest(); 
     return hash; 
    }; 
} 

당신에있는 md5 클래스를 포함 :

 var md5 = new Md5(); 
     md5.update(bytes); // array of byte values 
     hash = md5.digest(); 

당신은 문자열의 MD5 해시를 계산하려는 경우,이 같은 문자열 확장이있다. 이 같은 ASP 파일 :

<%@ language="Javascript" %> 
<script language="Javascript" runat="server" src='md5.js'></script> 
<script language="Javascript" runat="server" src='arrayExtensions.js'></script> 

<script language="Javascript" runat="server"> 
(function() { 
    ... 
}()); 
</script> 

그리고 당신은 다음과 같이 자바 스크립트 내에서 사용할 수 있습니다 :

var subject="The quick brown fox jumps over the lazy dog", 
     hash = subject.toMd5(), 
     g = hash.map(function(x){return x.toString(16);}), 
     stringRep = g.join(''); 

stringRep을 인쇄하면 예상대로 9e107d9d372bb6826bd81d3542a419d6이됩니다.

VBScript 내에서 해당 Md5 클래스를 사용하려면 a shim이 필요합니다.