如何获取Java使用我的安全供应商?(How do I get Java to use my Sec

2019-07-28 20:23发布

我写了一个自定义安全提供了AES / CBC / PKCS5Padding。 这工作正常。

做什么设置,我需要添加到Provider ,以便为Java将其识别为上述算法有效的供应商? 我已经有了

public class FooBarProvider extends Provider {
  public FooBarProvider() {
    super("FooBar", 1.0, "Provider for AES.");
    put("Cipher.AES", "foo.bar.AESCipher");
  }
}

其中,后者的说法是实际CipherSpi ,做的工作。 我在哪里注册,它支持CBC和PKCS5Padding的事实? 目前,要求相关Cipher不回我的类的实例:

Security.insertProviderAt(new FooBarProvider(), 1);
Cipher cip = Cipher.getInstance("AES/CBC/PKCS5Padding");
System.out.println(cip.getProvider()); //prints "SunJCE version 1.7"

Answer 1:

编写代码的过程中很简单的部分。 您已经声明自己的类提供了AES的Cipher实现。 这条线:

put("Cipher.AES", "foo.bar.AESCipher");

是几乎所有你需要完成的任务。 另外请注意,您的实施将自动调用的模式填充所有组合,因为您已经注册在算法级密码实现。

话虽如此,编写代码是比较容易的部分。 您正在创建一个密码,所以你需要签署您的JAR它可以安装和配置为提供者之前。 因为过程较为复杂,我不会把它复制都在这里,而我会向您推荐的甲骨文指南如何实现供应商 。 这是这个任务的极好来源。

如果你遵循的指导,仍然有问题,你可能需要在下载和安装了JCE无限制强度政策适用于您的安装JDK。



Answer 2:

Java的加密文档描述了注册机制Provider类:

  • http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#Provider

简短的版本是:

  1. 把供应商JAR的类路径或Java安装的扩展目录中。
  2. 注册商:
    • 编辑java.security配置文件(在Java安装),或
    • 在运行时,调用Security.addProviderSecurity.insertProviderAt


文章来源: How do I get Java to use my Security provider?
标签: java security