繁体   English   中英

在Java AES加密中使用提供程序

[英]Using providers in Java AES encryption

这可能是一个棘手的问题,但我对提供程序的工作方式感到困惑。 我已经尝试阅读过https://docs.oracle.com/javase/7/docs/technotes/guides/security/overview/jsoverview.html,但这对我来说意义不大。 说我们有:

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC")

Cipher cipher= Cipher.getInstance("AES/CBC/PKCS5Padding")

根据链接,听起来好像提供者指示了正在使用的实现,但独立于提供者,AES / CBC / PKCS5Padding是否基本相同? 在该示例中,充气城堡(我猜“ BC”对应于哪个)碰巧具有比默认实现更有效的算法吗? 感谢您的时间。

独立于提供者,AES / CBC / PKCS5Padding是否基本相同?

是的。

在该示例中,充气城堡(我猜“ BC”对应于哪个)碰巧具有比默认实现更有效的算法吗?

可能不是。 特别是在AES的情况下,由于使用了本机AES硬件,因此最近的Oracle提供程序可能比Bouncycastle快得多。

那么为什么要指定提供者?

好的,我知道您没有要求,但这似乎就是您要去的地方。 在大多数情况下,你应该指定供应商。 一般规则是避免指定提供程序,除非您有充分的理由这样做。 不指定提供程序会增加可移植性。

不幸的是,在某些情况下,您可能需要指定提供程序。 JCE中提供的抽象并没有涵盖实践中出现的所有情况。 如果遇到其中之一,最好再问一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM