C# 使用DSASignatureFormatter而不是DSACryptoServiceProvider生成签名有什么好处?

C# 使用DSASignatureFormatter而不是DSACryptoServiceProvider生成签名有什么好处?,c#,dsa,C#,Dsa,我正在使用DSA为二进制blob创建签名,并试图找出使用DSASignatureFormatter的CreateSignature(字节[])而不仅仅是使用DSACryptoServiceProvider的CreateSignature(字节[])可以获得什么 据我所知,使用DSASignatureFormatter的唯一好处是我可以使用SetHashAlgorithm()指定哈希算法,然后格式化程序为我处理数据哈希。在DSACryptoServiceProvider场景中,我必须在将数据传递给

我正在使用DSA为二进制blob创建签名,并试图找出使用DSASignatureFormatter的CreateSignature(字节[])而不仅仅是使用DSACryptoServiceProvider的CreateSignature(字节[])可以获得什么

据我所知,使用DSASignatureFormatter的唯一好处是我可以使用SetHashAlgorithm()指定哈希算法,然后格式化程序为我处理数据哈希。在DSACryptoServiceProvider场景中,我必须在将数据传递给CreateSignature方法之前对其进行预哈希


使用格式化程序还有什么其他好处吗

DSASignatureFormatter是一个非常有限的类,仅限于完整的加密算法。它只与签名有效负载有关,而其逆(DSASignatureDeformatter)只与验证签名有关

我想如果有一天您想切换到rsapkcs1signatureformat,那么您就可以对基类执行所有工作,并且可以相当轻松地进行切换

AsymmetricSignatureFormatter和AsymmetricSignatureFormatter是简单的类,它们无论如何都很容易编码,并且代表了与SymmetricAlgorithm类不同的抽象层