我有一個可用的.NET Web應用程序,它使用特定字符串上的MD5執行散列和加密。該字符串將存儲在cookie中。ASP經典和.NET上的MD5
問題是,我需要從ASP經典應用程序驗證這個cookie。
據我所知,有沒有建在ASP經典的加密提供,因此,我可能需要複製/寫我自己的實現MD5算法的。
有沒有實現隨時使用,最好是開源的(我不想惡意代碼發送世界各地的字符串),並與.NET版本兼容?
我有一個可用的.NET Web應用程序,它使用特定字符串上的MD5執行散列和加密。該字符串將存儲在cookie中。ASP經典和.NET上的MD5
問題是,我需要從ASP經典應用程序驗證這個cookie。
據我所知,有沒有建在ASP經典的加密提供,因此,我可能需要複製/寫我自己的實現MD5算法的。
有沒有實現隨時使用,最好是開源的(我不想惡意代碼發送世界各地的字符串),並與.NET版本兼容?
創建您自己的.NET的DLL只進行驗證,然後從ASP調用它所需的字節!
大部分的.Net加密命名空間的僅僅是一個圍繞Windows'CryptoAPI的包裝,你可能可以直接使用它,但這可能最終是一個痛苦。此頁面可能會有所幫助... http://www.codeproject.com/KB/asp/adrian_bacaianu.aspx
有趣的解決方案,雖然部署可能有點麻煩。值得嘗試。 – 2009-11-03 18:34:57
您可以在傳統的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。
我也在考慮這種解決方案,將邏輯進程卸載到.NET代碼中。你有什麼比較表現?這段代碼將會經常運行,對於整個應用程序來說非常重要。 – 2009-11-04 09:37:15
你的意思是從ASP調用.Net對象的性能?根據我的經驗,這是微不足道的,但你應該測量它。 – 2009-11-04 12:26:31