ASP经典和.NET上的MD5
我有一个可用的.NET Web应用程序,它使用特定字符串上的MD5执行散列和加密。该字符串将存储在cookie中。ASP经典和.NET上的MD5
问题是,我需要从ASP经典应用程序验证这个cookie。
据我所知,有没有建在ASP经典的加密提供,因此,我可能需要复制/写我自己的实现MD5算法的。
有没有实现随时使用,最好是开源的(我不想恶意代码发送世界各地的字符串),并与.NET版本兼容?
大部分的.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