2009-11-03 77 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