java.security.NoSuchProviderException: IBMJCECCA

#java #jce

#java #jce

Вопрос:

Эта ошибка возникает при запуске следующей программы

 import java.security.SecureRandom;
import java.util.Random;

public class IBMSecureRandom1 
{
   public static void main(String[] args) {

   try {
   // get a real random generator
    SecureRandom reallyRandom = SecureRandom.getInstance("IBMSecureRandom","IBMJCECCA");
    System.out.print("Some really random numbers: ");
        for (int i = 0; i < 3; i  ) {
            System.out.print(reallyRandom.nextInt()   " ");
        }
    System.out.println();
    // make a pseudo random generator seeded by the real random generator
    Random pseudoRandom = new Random(reallyRandom.nextLong());
    System.out.print("Some pseudo random numbers: ");

    for (int i = 0; i < 3; i  ) {
        System.out.print(pseudoRandom.nextInt()   " ");
    }   
    System.out.println();
    }
    catch (Exception e) {
        System.err.println("Something went wrong ...");
        e.printStackTrace();
    }
  }
}
  

Я не знаю, нужно ли мне добавлять какой-либо файл jar или что-то еще

Комментарии:

1. Почему вы хотите использовать IBMJCECCA? Вы действительно используете z / OS и IBM JDK в первую очередь?

2. нет, я не использую z / OS

3. Это не беспокоит провайдера IBMJCECCA и IBMSecureRandom реализацию, просто используйте то, что доступно в JCE provider .

4. да, но все равно появляется ошибка, нужно ли мне добавлять какой-либо jar-файл??

5. Пожалуйста, просто используйте new SecureRandom() , если вы не понимаете, какие строки следует указывать в качестве имени алгоритма и имени поставщика.

Ответ №1:

От :http://www-03.ibm.com/systems/z/os/zos/tools/java/faq/javasecurityfaq.html

Вы увидите эту ошибку, когда приложение выдает Service.getInstance(algorithm,provider) , а указанный поставщик не установлен в JVM. Инструкции по установке, приведенные в Как мне установить поставщика IBMJCECCA? может использоваться для установки любого поставщика, если вы знаете имя пакета и класса.

Комментарии:

1. Но сначала OP нужно будет откуда-то получить IBMJCECCA.