2009-11-03 65 views
0

我有一个可用的.NET Web应用程序,它使用特定字符串上的MD5执行散列和加密。该字符串将存储在cookie中。ASP经典和.NET上的MD5

问题是,我需要从ASP经典应用程序验证这个cookie。

据我所知,有没有建在AS​​P经典的加密提供,因此,我可能需要复制/写我自己的实现MD5算法的。

有没有实现随时使用,最好是开源的(我不想恶意代码发送世界各地的字符串),并与.NET版本兼容?

回答

3

创建您自己的.NET的DLL只进行验证,然后从ASP调用它所需的字节!

方法如下:Exposing .NET Components to COM

+0

我也在考虑这种解决方案,将逻辑进程卸载到.NET代码中。你有什么比较表现?这段代码将会经常运行,对于整个应用程序来说非常重要。 – 2009-11-04 09:37:15

+0

你的意思是从ASP调用.Net对象的性能?根据我的经验,这是微不足道的,但你应该测量它。 – 2009-11-04 12:26:31

1

快速的Web搜索的VBScript MD5止跌回升很多

而不是剪切和粘贴的最好的一个,我发现是here

+0

我知道有*很多*。我有一个返回与.NET实现不同的结果。 – 2009-11-03 18:27:26

+1

您可能会发现.NET使用Unicode作为文本,VBScript使用ASCII。 – blowdart 2009-11-03 18:53:42

+0

我特别使用ASCIIEncoder将字符串对象转换为byte []。 – 2009-11-04 09:35:55

2

大部分的.Net加密命名空间的仅仅是一个围绕Windows'CryptoAPI的包装,你可能可以直接使用它,但这可能最终是一个痛苦。此页面可能会有所帮助... http://www.codeproject.com/KB/asp/adrian_bacaianu.aspx

+0

有趣的解决方案,虽然部署可能有点麻烦。值得尝试。 – 2009-11-03 18:34:57

1

您可以在传统的ASP使用JavaScript,即使您的首选语言是VBScript(或别的东西)。使用Javascript实现的Google Closure library包含MD5哈希类。由于Closure库通过Apache Source License许可,任何人都可以自由修改和重新使用它。

已经修饰为无任何的Closure先决条件的可用的是MD5哈希Here is a version。您可以使用它像这样:

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

如果你想计算一个字符串的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的类到你。 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> 

而且你可以用它在JavaScript这样的:

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