Elettracompany.com

Компьютерный справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Java security nosuchalgorithmexception

SecureRandom getInstance () метод в Java с примерами

getInstance (Строковый алгоритм)

Метод getInstance () класса java.security.SecureRandom используется для возврата объекта SecureRandom, который реализует указанный алгоритм генератора случайных чисел (RNG).

Этот метод просматривает список зарегистрированных провайдеров безопасности, начиная с наиболее предпочтительного провайдера. Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от первого провайдера, который поддерживает указанный алгоритм.

Синтаксис:

Параметры: Этот метод использует стандартный алгоритм RNG в качестве параметра.

Возвращаемое значение: этот метод возвращает новый объект SecureRandom .

Исключение: этот метод генерирует исключение NoSuchAlgorithmException — если никакой провайдер не поддерживает реализацию SecureRandomSpi для указанного алгоритма.

Замечания:

  1. Программы не будут работать в онлайн-среде IDE.
  2. Каждый раз, когда класс Secure Random генерирует случайный вывод.

Ниже приведены примеры, иллюстрирующие метод getInstance () :

Пример 1:

// Java-программа для демонстрации
// метод nextBytes ()

public class GFG1 <

public static void main(String[] argv)

// создание объекта SecureRandom и получение экземпляра

// с помощью метода getInstance ()

SecureRandom sr = SecureRandom.getInstance( «SHA1PRNG» );

// Объявление строковой переменной

String str = «Tajmahal» ;

// Объявление байтового массива

// преобразование строки в байт

byte [] b = str.getBytes();

// печать байтового массива

System.out.println( «Byte array before operation : «

// генерируем указанное пользователем количество случайных байтов

// используя метод nextBytes ()

// печать нового байтового массива

System.out.println( «Byte array after operation : «

catch (NoSuchAlgorithmException e) <

System.out.println( «Exception thrown : » + e);

catch (ProviderException e) <

System.out.println( «Exception thrown : » + e);

Выход:

Пример 2:

// Java-программа для демонстрации
// метод getInstance ()

public class GFG1 <

public static void main(String[] argv)

// создание объекта SecureRandom и получение экземпляра

// с помощью метода getInstance ()

System.out.println( «Trying to get the instance of TAJMAHAL» );

SecureRandom sr = SecureRandom.getInstance( «TAJMAHAL» );

// Объявление строковой переменной

String str = «Tajmahal» ;

// Объявление байтового массива

// преобразование строки в байт

byte [] b = str.getBytes();

// печать байтового массива

System.out.println( «Byte array before operation : «

// генерируем указанное пользователем количество случайных байтов

// используя метод nextBytes ()

// печать нового байтового массива

System.out.println( «Byte array after operation : «

catch (NoSuchAlgorithmException e) <

System.out.println( «Exception thrown : » + e);

catch (ProviderException e) <

System.out.println( «Exception thrown : » + e);

Выход:

getInstance (Строковый алгоритм, поставщик провайдера)

Метод getInstance () класса java.security.SecureRandom используется для возврата объекта SecureRandom, который реализует указанный алгоритм генератора случайных чисел (RNG).
Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi из указанного объекта Provider. Обратите внимание, что указанный объект поставщика не должен быть зарегистрирован в списке поставщиков.

Возвращенный объект SecureRandom не был заполнен. Чтобы заполнить возвращаемый объект, вызовите метод setSeed. Если setSeed не вызывается, первый вызов nextBytes заставит объект SecureRandom заполнить себя. Это самозаполнение не произойдет, если ранее был вызван setSeed.

Синтаксис:

Параметры: Этот метод принимает следующий аргумент в качестве параметра

  • Алгоритм — название алгоритма ГСЧ.
  • провайдер — провайдер.

Возвращаемое значение: этот метод возвращает новый объект SecureRandom .

Исключение: этот метод генерирует следующее исключение

  • NoSuchAlgorithmException — если реализация SecureRandomSpi для указанного алгоритма не доступна из указанного объекта Провайдера.
  • IllegalArgumentException — если указанный поставщик является нулем.

Замечания:

  1. Программы не будут работать в онлайн-среде IDE.
  2. Каждый раз, когда класс Secure Random генерирует случайный вывод.

Ниже приведены примеры, иллюстрирующие метод getInstance () :

Пример 1:

// Java-программа для демонстрации
// метод getInstance ()

public class GFG1 <

public static void main(String[] argv)

// создание объекта SecureRandom

SecureRandom sr1 = new SecureRandom( new byte [] < 1 , 2 , 3 , 4 >);

// создание объекта Provider

Provider pd = sr1.getProvider();

// создание объекта SecureRandom и получение экземпляра

// с помощью метода getInstance ()

SecureRandom sr = SecureRandom.getInstance( «SHA1PRNG» , pd);

// Объявление строковой переменной

String str = «Tajmahal» ;

// Объявление байтового массива

// преобразование строки в байт

byte [] b = str.getBytes();

// печать байтового массива

System.out.println( «Byte array before operation : «

// генерируем указанное пользователем количество случайных байтов

// используя метод nextBytes ()

// печать нового байтового массива

System.out.println( «Byte array after operation : «

catch (NoSuchAlgorithmException e) <

System.out.println( «Exception thrown : » + e);

catch (ProviderException e) <

System.out.println( «Exception thrown : » + e);

Выход:

Примечание . Следующая программа создает следующее исключение в онлайн-среде IDE.
Возникло исключение: java.security.ProviderException: ошибка инициализации

Пример 2:

// Java-программа для демонстрации
// метод getInstance ()

public class GFG1 <

public static void main(String[] argv)

// создание объекта SecureRandom

SecureRandom sr1 = new SecureRandom( new byte [] < 1 , 2 , 3 , 4 >);

// создание объекта Provider

Provider pd = sr1.getProvider();

// создание объекта SecureRandom и получение экземпляра

// с помощью метода getInstance ()

System.out.println( «Trying to getting the instance of TAJMAHAL » );

SecureRandom sr = SecureRandom.getInstance( «TAJMAHAL» , pd);

// Объявление строковой переменной

String str = «Tajmahal» ;

// Объявление байтового массива

// преобразование строки в байт

byte [] b = str.getBytes();

// печать байтового массива

System.out.println( «Byte array before operation : «

// генерируем указанное пользователем количество случайных байтов

// используя метод nextBytes ()

// печать нового байтового массива

System.out.println( «Byte array after operation : «

catch (NoSuchAlgorithmException e) <

System.out.println( «Exception thrown : » + e);

catch (ProviderException e) <

System.out.println( «Exception thrown : » + e);

Выход:

getInstance (строковый алгоритм, строковый поставщик)

Метод getInstance () класса java.security.SecureRandom используется для возврата объекта SecureRandom, который реализует указанный алгоритм генератора случайных чисел (RNG).

Новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от указанного поставщика, возвращается. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.

Синтаксис:

Параметры: Этот метод принимает следующий аргумент в качестве параметра

  • Алгоритм — название алгоритма ГСЧ. См. Раздел SecureRandom в документации по именам стандартных алгоритмов архитектуры криптографии Java для получения информации об именах стандартных алгоритмов RNG.
  • провайдер — название провайдера.

Возвращаемое значение: этот метод возвращает новый объект SecureRandom .

Исключение: этот метод генерирует следующее исключение

  • NoSuchAlgorithmException — если реализация SecureRandomSpi для указанного алгоритма не доступна от указанного поставщика.
  • NoSuchProviderException — если указанный поставщик не зарегистрирован в списке поставщиков безопасности.
  • IllegalArgumentException — если имя провайдера является нулевым или пустым.

Замечания:

  1. Программы не будут работать в онлайн-среде IDE.
  2. Каждый раз, когда класс Secure Random генерирует случайный вывод.

Ниже приведены примеры, иллюстрирующие метод getInstance () :

Пример 1:

// Java-программа для демонстрации
// метод getInstance ()

java.security.NoSuchAlgorithmException exception while encrypting the input

While encrypting the input message using public key we are getting the below error exception .

» java.security.NoSuchAlgorithmException: No such algorithm: RSA/ECB/PKCS1Padding» .

Here is the small piece of code we used for encryption .

inKey = PGPUtil.getDecoderStream(inKey); // inKey contains public key info

PGPPublicKeyRingCollection pkCol = new PGPPublicKeyRingCollection(inKey);

Iterator it = pkCol.getKeyRings();

Iterator pkIt = pkRing.getPublicKeys();

temp = (PGPPublicKey) pkIt.next();

out = new DataOutputStream(out);

ByteArrayOutputStream bOut = new ByteArrayOutputStream();

PGPCompressedDataGenerator comData = new PGPCompressedDataGenerator(PGPCompressedDataGenerator.ZIP);

PGPLiteralDataGenerator lData = new PGPLiteralDataGenerator();

OutputStream pOut = lData.open(comData.open(bOut),PGPLiteralData.BINARY, «», inputString.length(),new Date());

PGPEncryptedDataGenerator cPk = new PGPEncryptedDataGenerator(PGPEncryptedDataGenerator.CAST5, new SecureRandom(),»BC»);

byte[] bytes = bOut.toByteArray();

The above exception has resolved by restarting the java stack.

Alert Moderator

You already have an active moderator alert for this content.

  • Закрыть
Add comment

You could check if you are using the unlimited strength jurisdiction policy files.

#739043 How to Check for Full Strength Jurisdiction Policies:

Alert Moderator

You already have an active moderator alert for this content.

  • Закрыть
Add comment

This exception usually means that the chosen enc algorithm (CAST5) is not available on the Bouncy Castle provider. Therefore, please try:

1. Update the JDK to latest hotfix. For example, if using JDK 1.4.2_11, install 1.4.2_30.

2. Apply Sarah’s recommendation of updating the policy files;

3. Change the BC provider. Try using SUN’s provider, for example.

Alert Moderator

You already have an active moderator alert for this content.

  • Закрыть
Add comment

We are using below java version

java version «1.5.0_14»

Java(TM) 2 Runtime Environment, Standard Edition (build 5.1.027)

SAP Java 64-Bit Server VM (build 5.1.027, Dec 12 2008 04:31:57 — 51_REL — optU — aix ppc64 — bas2:113000 (mixed mode))

u2022Below mentioned jar files are downloaded from http://www.bouncycastle.org/latest_releases.html

u2022bcpg-jdk15-146 , bcprov-ext-jdk15-146, bcprov-jdk15-146

As you guys suggested we have checked for security file access .

There is no restriction to any algorithm.

// Manufacturing policy file.

// There is no restriction to any algorithms.

We are getting the below exception while we are doing encryption.Could you please suggest?

Error: javax.ejb.TransactionRolledbackLocalException: (Failed in component: sap.com/PGPEncryptionEAR) Exception raised from invocation of public com.sap.aii.af.lib.mp.module.ModuleData com.ngrid.sap.module.crypto.PGPDecryptionBean.process(com.sap.aii.af.lib.mp.module.ModuleContext,com.sap.aii.af.lib.mp.module.ModuleData) throws com.sap.aii.af.lib.mp.module.ModuleException method on bean instance com.ngrid.sap.module.crypto.PGPDecryptionBean-53db2a8 for bean sap.com/PGPEncryptionEARxml|PGPEncryption.jarxml|PGPDecryptionBean in application sap.com/PGPEncryptionEAR.; nested exception is: java.lang.ClassCastException: class java.lang.NullPointerException:null incompatible with class org.bouncycastle.openpgp.PGPException:sap.com/PGPEncryptionEAR-com.sap.engine.boot.loader.ResourceMultiParentClassLoader-3ac72a8c-alive; nested exception is: javax.ejb.EJBException: (Failed in component: sap.com/PGPEncryptionEAR) Exception raised from invocation of public com.sap.aii.af.lib.mp.module.ModuleData com.ngrid.sap.module.crypto.PGPDecryptionBean.process(com.sap.aii.af.lib.mp.module.ModuleContext,com.sap.aii.af.lib.mp.module.ModuleData) throws com.sap.aii.af.lib.mp.module.ModuleException method on bean instance com.ngrid.sap.module.crypto.PGPDecryptionBean-53db2a8 for bean sap.com/PGPEncryptionEARxml|PGPEncryption.jarxml|PGPDecryptionBean in application sap.com/PGPEncryptionEAR.; nested exception is: java.lang.ClassCastException: class java.lang.NullPointerException:null incompatible with class org.bouncycastle.openpgp.PGPException:sap.com/PGPEncryptionEAR-com.sap.engine.boot.loader.ResourceMultiParentClassLoader-3ac72a8c-alive; nested exception is: javax.ejb.EJBTransactionRolledbackException: (Failed in component: sap.com/PGPEncryptionEAR) Exception raised from invocation of public com.sap.aii.af.lib.mp.module.ModuleData com.ngrid.sap.module.crypto.PGPDecryptionBean.process(com.sap.aii.af.lib.mp.module.ModuleContext,com.sap.aii.af.lib.mp.module.ModuleData) throws com.sap.aii.af.lib.mp.module.ModuleException method on bean instance com.ngrid.sap.module.crypto.PGPDecryptionBean-53db2a8 for bean sap.com/PGPEncryptionEARxml|PGPEncryption.jarxml|PGPDecryptionBean in application sap.com/PGPEncryptionEAR.; nested exception is: java.lang.ClassCastException: class java.lang.NullPointerException:null incompatible with class org.bouncycastle.openpgp.PGPException:sap.com/PGPEncryptionEAR-com.sap.engine.boot.loader.ResourceMultiParentClassLoader-3ac72a8c-alive; nested exception is: javax.ejb.EJBException: (Failed in component: sap.com/PGPEncryptionEAR) Exception raised from invocation of public com.sap.aii.af.lib.mp.module.ModuleData com.ngrid.sap.module.crypto.PGPDecryptionBean.process(com.sap.aii.af.lib.mp.module.ModuleContext,com.sap.aii.af.lib.mp.module.ModuleData) throws com.sap.aii.af.lib.mp.module.ModuleException method on bean instance com.ngrid.sap.module.crypto.PGPDecryptionBean-53db2a8 for bean sap.com/PGPEncryptionEARxml|PGPEncryption.jarxml|PGPDecryptionBean in application sap.com/PGPEncryptionEAR.; nested exception is: java.lang.ClassCastException: class java.lang.NullPointerException:null incompatible with class org.bouncycastle.openpgp.PGPException:sap.com/PGPEncryptionEAR-com.sap.engine.boot.loader.ResourceMultiParentClassLoader-3ac72a8c-alive

At this below step it is going to catch block and throwing above exception

Java and SSL — java.security.NoSuchAlgorithmException

I’ve built a Java program as a front end for a database on a server, and I’m trying to use SSL to encrypt traffic between clients and the server. Here is the command I issued to create the server certificate:

Here is the relevant code:

When I try to run this, I catch this:

java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)

I’ve also found that the «KeyPairGenerator» service has algorithms DIFFIEHELLMAN, DSA, RSA available to it, while «SSLContext» has algorithms SSL, TLS, SSLV3, DEFAULT, TLSV1.

Do I need to find some way to install RSA into the SSLContext service? Am I even looking at the correct services? Should I not be using RSA?

I’m new to the whole SSL — Security — Certificates thing, and it just blows me away that each of these different services don’t have the same algorithms when they are supposed to be accessing the same certificates.

Создан 15 июн. 11 2011-06-15 22:30:45 Zarjio

Looks eerily similar to [this problem](http://stackoverflow.com/questions/2125686/using-a-self-generated-key-to-test-java-ssl-app). I suspected the limited cryptography support first, but 1024-bit strong keypairs should have worked fine. RSA should be available without adding any separate providers. – Vineet Reynolds 15 июн. 11 2011-06-15 23:03:29

Thanks for the link! I looked at that question, and it appears I am doing everything correctly but still getting exceptions. – Zarjio 16 июн. 11 2011-06-16 04:42:09

It would also be interesting to see the various «Caused by» exceptions you get before this ‘NoSuchAlgorithmException’: that’s often where the real cause lies. – Bruno 16 июн. 11 2011-06-16 09:34:02

1 ответ

Try javax.net.ssl.keyStorePassword instead of javax.net.ssl.keyPassword : the latter isn’t mentioned in the JSSE ref guide.

The algorithms you mention should be there by default using the default security providers. NoSuchAlgorithmException s are often cause by other underlying exceptions (file not found, wrong password, wrong keystore type, . ). It’s useful to look at the full stack trace.

You could also use -Djavax.net.debug=ssl , or at least -Djavax.net.debug=ssl,keymanager , to get more debugging information, if the information in the stack trace isn’t sufficient.

Создан 16 июн. 11 2011-06-16 09:35:42 Bruno

I’m an idiot. You were completely correct, the problem was that simple. – Zarjio 16 июн. 11 2011-06-16 15:07:21

Nice settings for debugging. Helped me find a different problem. +1 – JAM 08 май. 12 2012-05-08 19:11:55

@Bruno Yes the whole «keystore pass must be same as keypass» and also I had the old password on the «keyStorePassword» line but your answer reminded me to check that again. THANKS a lot! – Dexter 01 май. 17 2017-05-01 23:03:56

Читать еще:  Web сайт на java
Ссылка на основную публикацию
Adblock
detector