我在这里读书 还http://www.bouncycastle.org/wiki/display/JA1/Provider+Installation 还有itext关于数字签名的白皮书。
这是一个itext的示例代码片段:
BouncyCastleProvider provider = new BouncyCastleProvider();
Security.addProvider(provider);
KeyStore ks = KeyStore.getInstance("pkcs12", provider.getName());
ks.load(new FileInputStream(path), pass);
问题:什么是安全提供商,它用于什么? Itext代码使用bouncycastle提供程序。它基本上是用于哈希 pdf的代码,然后私钥用于加密哈希?上面的“安全”库的作用是什么,它表示Security.addProvider(提供者)。
感谢。
答案 0 :(得分:0)
安全提供程序为运行时提供算法服务。这些是算法的实现,例如Bouncy Castle增加了许多扩展CipherSpi
的算法实现(Spi意味着服务提供者实现)。 Oracle也提供CipherSpi
类,但它仅限于某些算法。这些服务也用于实现例如KeyStoreSpi
的{{1}},使您的问题更具针对性。
除了提供对额外算法的支持外,还可以使用提供程序来扩展API的功能,为硬件令牌(智能卡,HSM),特定密钥存储,更快的实现等提供支持。然而,主要使用Bouncy因为它扩展了可用算法的数量。通常,在请求算法时,您不必指定提供者名称,让系统为您选择。但有时该算法为Oracle提供程序中的一个提供(或提供)某些特定优势(例如"pkcs12"
)。在示例代码中明确选择提供程序可能是有意义的。
"SunJCE"
类是寄存器。系统可以使用它们查找和列出提供程序中存在的服务,使用它们的名称(作为字符串)和别名。要了解其工作原理,请尝试我的answer here。