内部异常 NotSupportedException: Either itext7.bouncy-castle-adapter or itext7.bouncy-castle-fips-adapter dependency must be added in order to use BouncyCastleFactoryCreator
时间: 2024-02-23 10:03:12 浏览: 134
System.NotSupportedException(解决方案).md
如果您在使用 iText7 的过程中遇到了“内部异常 NotSupportedException: Either itext7.bouncy-castle-adapter or itext7.bouncy-castle-fips-adapter dependency must be added in order to use BouncyCastleFactoryCreator”这个错误,原因是您正在尝试使用 iText7 的 BouncyCastleFactoryCreator,但是您没有添加 iText7.BouncyCastleAdapter 或 iText7.BouncyCastleFipsAdapter 依赖项。
BouncyCastleFactoryCreator 是 iText7 中的一个类,它提供了一种创建 BouncyCastle 加密算法工厂的方法。如果您计划在 iText7 中使用加密或数字签名功能,则需要使用 BouncyCastleFactoryCreator。
要解决这个问题,您需要在项目中添加 iText7.BouncyCastleAdapter 或 iText7.BouncyCastleFipsAdapter 依赖项,具体取决于您的应用程序是否需要支持 FIPS(美国联邦信息处理标准)。您可以通过 NuGet 包管理器或手动添加这些依赖项的引用来实现。
在使用 iText7.BouncyCastleAdapter 时,您可以添加以下 NuGet 包:
```plaintext
iText7.BouncyCastleAdapter
```
在使用 iText7.BouncyCastleFipsAdapter 时,您可以添加以下 NuGet 包:
```plaintext
iText7.BouncyCastleFipsAdapter
```
一旦您添加了适当的依赖项,就可以在 iText7 中使用 BouncyCastleFactoryCreator 了。 例如:
```csharp
using iText.IO.Font.Constants;
using iText.Kernel.Pdf;
using iText.Signatures;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;
// ...
// Get the private key and certificate from a keystore or other source
AsymmetricKeyParameter privateKey = // ...
Org.BouncyCastle.X509.X509Certificate[] chain = // ...
// Create the BouncyCastle encryption factory
ICipherParameters cipherParams = new AsymmetricKeyEntry(privateKey).Key;
BouncyCastleFactoryCreator factoryCreator = new BouncyCastleFactoryCreator();
Security.AddProvider(new BouncyCastleProvider());
PdfSigner signer = new PdfSigner(pdfDoc, outputStream, new StampingProperties().UseAppendMode());
signer.SignDetached(chain, privateKey, new[] { new PdfSignatureAppearance().SetPageNumber(1) }, null, null, null, 0, CryptoStandard.CMS, factoryCreator);
```
上面的代码示例演示了如何使用 BouncyCastleFactoryCreator 创建一个 PDF 签名器。请注意,在创建 factoryCreator 对象之前,我们添加了 BouncyCastleProvider,这是一个安全提供程序,可以提供 BouncyCastle 加密算法的支持。
阅读全文