我正在尝试更新执行数字签名的函数,我想从 SHA1 SHA256 切换这是当前函数:
private byte[] zSignData(Byte[] msg, X509Certificate2 signerCert)
{
ContentInfo contentInfo = new ContentInfo(msg);
SignedCms signedCms = new SignedCms(contentInfo, false);
CmsSigner cmsSigner = new CmsSigner(signerCert);
cmsSigner.DigestAlgorithm = new Oid("1.3.14.3.2.26"); //SHA1
signedCms.ComputeSignature(cmsSigner, false);
return signedCms.Encode();
}
此功能运行良好
为了更新到 SHA256,我改变了
cmsSigner.DigestAlgorithm = new Oid("1.3.14.3.2.26"); //SHA1
和
cmsSigner.DigestAlgorithm = new Oid("2.16.840.1.101.3.4.2.1");//SHA256
但在
signedCms.ComputeSignature(cmsSigner, false);
我得到以下异常
System.Security.Cryptography.CryptographicException Message=出现内部错误。
有人有建议吗?
我使用 VS2010 Professional 64 和 win7 Professional 64