解密.net 4.5 ScriptResources URL

时间:2017-03-07 01:23:20

标签: c# .net .net-4.5

我需要使用当前的.net 4.5代码在另一个应用程序中解密来自ScriptResource.axd网址的d。

示例网址:

<script src="/ScriptResource.axd?d=uBiLKmMIzkaavHlylMEgvqJFJuEnTqx-mMCevtyiy0KtaoGntw3zkVxSf9-7vVftEoviBYTu9G9pNcPMBekA8w_3HIQ-FHgM7KrekUC12jp66gU79E1WTxXaeLES1gLuYI01XfoaNBuGce8VFhZVkrsFwxC8--M7hcL2HMwOIJZBLW9w0&amp;t=ffffffffc8b7aa56" type="text/javascript"></script>

根据Cryptographic Improvements in ASP.NET 4.5, pt. 2,我需要有目的地致电MachineKey.Unprotect

我在.net源代码"ScriptResourceHandler.ScriptResourceUrl"

中找到了我的想法

我的机器密钥(已清理)在服务器(生成网址)和本地计算机(用于测试)上匹配。

<machineKey validationKey="HEX" decryptionKey="HEX" validation="SHA1" decryption="AES" compatibilityMode="Framework45"/>

我的解密代码如下:

public static string Decrypt(string encrypted, string purpose = "ScriptResourceHandler.ScriptResourceUrl")
{
    if (string.IsNullOrEmpty(encrypted))
        return string.Empty;

    try
    {
        var bytes = HttpServerUtility.UrlTokenDecode(encrypted);
        if (bytes != null && bytes.Length > 0)
        {
            var decryptedBytes = MachineKey.Unprotect(bytes,new string [] { purpose });
            if (decryptedBytes != null && decryptedBytes.Length > 0)
                return Encoder.GetString(decryptedBytes);
        }

    }
    catch (Exception ex)
    {
        return ex.Message;
    }

    return string.Empty;
}

我得到的输出是Error occurred during a cryptographic operation.,我已经无法进入.net源代码以找出更多信息。

如果我使用compatibilityMode来定位框架2.0,我可以使它工作,但这会引起一些安全问题。

有关使用4.5.2的任何想法吗?

0 个答案:

没有答案