首页 > 解决方案 > 证书SHA1withRSA加密方式.NET Framework和.NET Core计算结果不一致

问题描述

    public static string SignatureMessage(string certFileName, string password, byte[] dataTobeSign)
    {
        byte[] pfxCert = File.ReadAllBytes(certFileName);
        SecureString pwd = new SecureString();
        char[] pwdCharArray = password.ToCharArray();

        for (int i = 0; i < pwdCharArray.Length; i++)
        {
            pwd.AppendChar(pwdCharArray[i]);
        }

        X509Certificate2 cert = new X509Certificate2(pfxCert, pwd);

        CmsSigner signer = new CmsSigner(cert);
        signer.DigestAlgorithm = new Oid("1.3.14.3.2.26", "sha1");
        signer.IncludeOption = X509IncludeOption.EndCertOnly;

        ContentInfo signedData = new ContentInfo(dataTobeSign);
        SignedCms cms = new SignedCms(signedData, true);
        cms.ComputeSignature(signer);
        byte[] signature = cms.Encode();
        return Convert.ToBase64String(signature);
    }

我正在 .NET Core 3.1 和 .NET Framework v4.6.1 中尝试这个。

谁能帮我?

上面的代码在上面的环境列表中运行。结果不一样。因此,我无法升级到 .NET Core。

已完成问题重现 dome github 链接在此处输入链接描述

标签: c#.net.net-core

解决方案


推荐阅读