ASP Classic和.NET上的MD5
我有一个工作的.NETWeb应用程序,它使用MD5对特定字符串执行哈希和加密。此字符串将存储在cookie中 问题是,我需要从ASP经典应用程序验证此cookie 据我所知,ASP classic中没有内置的加密提供程序,因此我可能需要复制/编写自己的MD5算法实现ASP Classic和.NET上的MD5,.net,asp-classic,vbscript,cryptography,.net,Asp Classic,Vbscript,Cryptography,我有一个工作的.NETWeb应用程序,它使用MD5对特定字符串执行哈希和加密。此字符串将存储在cookie中 问题是,我需要从ASP经典应用程序验证此cookie 据我所知,ASP classic中没有内置的加密提供程序,因此我可能需要复制/编写自己的MD5算法实现 是否有任何可以使用的实现,最好是开源的(我不想让流氓代码在世界各地发送字符串),并且与.NET对应版本兼容?对VBScript MD5的快速web搜索出现了很多 与剪切粘贴相比,我发现的最好的方法是大部分.Net加密名称空间只是Wi
是否有任何可以使用的实现,最好是开源的(我不想让流氓代码在世界各地发送字符串),并且与.NET对应版本兼容?对VBScript MD5的快速web搜索出现了很多
与剪切粘贴相比,我发现的最好的方法是大部分.Net加密名称空间只是Windows CryptoAPI的包装器,您可以直接使用它,但这可能会带来麻烦。这一页可能会有帮助 仅使用执行验证所需的字节创建自己的.net DLL,然后从ASP调用它
下面是方法:您可以在经典ASP中使用Javascript,即使您的首选语言是VBScript(或其他语言) 用Javascript实现的包含一个MD5哈希类。由于Closure lib是通过Apache源代码许可证获得许可的,因此任何人都可以自由修改和重用它 MD5散列的一部分,该散列已被修改为在没有任何关闭先决条件的情况下可用。您可以这样使用它:
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;
};
}
<%@ 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('');
打印出stringRep9e107d9d372bb6826bd81d3542a419d6
将按预期提供9e107d9d372bb6826bd81d3542a419d6
在VBScript中使用Md5类需要大量的资源。我知道有很多。我有一个在.NET实现中返回不同的结果。您可能会发现.NET使用Unicode作为文本,VBScript使用ASCII。我专门使用AscienceOrder将字符串对象转换为字节[]。嗯,奇怪,我认为post示例是一个有趣的解决方案,尽管部署可能有点麻烦。不过值得一试。我也在考虑这种解决方案,将逻辑过程卸载到.NET代码中。你有没有关于性能的比较?这段代码将经常运行,对整个应用程序来说非常关键。你是说从ASP调用.Net对象的性能如何?从我的经验来看,这是微不足道的,但你应该测量一下。