ASP Classic和.NET上的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

我有一个工作的.NETWeb应用程序,它使用MD5对特定字符串执行哈希和加密。此字符串将存储在cookie中

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

据我所知,ASP classic中没有内置的加密提供程序,因此我可能需要复制/编写自己的MD5算法实现


是否有任何可以使用的实现,最好是开源的(我不想让流氓代码在世界各地发送字符串),并且与.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('');
打印出stringRep
9e107d9d372bb6826bd81d3542a419d6
将按预期提供
9e107d9d372bb6826bd81d3542a419d6


在VBScript中使用Md5类需要大量的资源。

我知道有很多。我有一个在.NET实现中返回不同的结果。您可能会发现.NET使用Unicode作为文本,VBScript使用ASCII。我专门使用AscienceOrder将字符串对象转换为字节[]。嗯,奇怪,我认为post示例是一个有趣的解决方案,尽管部署可能有点麻烦。不过值得一试。我也在考虑这种解决方案,将逻辑过程卸载到.NET代码中。你有没有关于性能的比较?这段代码将经常运行,对整个应用程序来说非常关键。你是说从ASP调用.Net对象的性能如何?从我的经验来看,这是微不足道的,但你应该测量一下。