simetrico murcielago hill encriptar desencriptar descifrar cifrar cifrado cesar algoritmos java encryption cryptography javax.crypto

murcielago - desencriptar sha256 java



¿Cómo puedo enumerar los algoritmos de cifrado disponibles? (2)

El documento de Cipher.getInstance() dice:

Tenga en cuenta que la lista de proveedores registrados se puede recuperar a través del método Security.getProviders ()

Al hacer clic en el enlace se accede al documento de Proveedor, que tiene un método getServices() documentado por:

Obtenga un conjunto no modificable de todos los servicios compatibles con este proveedor.

Y al hacer clic en el enlace se accede al documento de Proveedor que tiene un método getAlgorithm() .

Tenga en cuenta que este es un método muy empírico. Un método más lógico sería leer la documentación de las bibliotecas de cifrado que está utilizando. Debe contener la lista de algoritmos admitidos.

Cualquiera que sea el método que elija, leer la documentación ayuda mucho.

Estoy obteniendo una implementación de Cipher con Cipher.getInstance(String algorithm) . Tengo la impresión de que los nombres de los algoritmos disponibles que puedo aprobar difieren en función de las bibliotecas que están presentes en mi classpath.

Me gustaría escribir un programa simple que pueda ejecutar con diferentes classpaths que enumerarán los nombres de algoritmo de Cipher disponibles. ¿Qué método necesitaría llamar para obtener esta lista?


Una vez que tengo una lista de proveedores, como se describe en la publicación de JB Nizet, todavía no tengo una lista de algoritmos. Encontré que cada Proveedor funciona como un objeto de Propiedades, y las Propiedades codifican los nombres de los algoritmos. No estoy del todo claro si esta es la forma correcta de buscarlos o no, y qué significa exactamente todas las otras propiedades, pero acabo de escribir una rutina que arrojó todas las propiedades a System.out y grepped para varias cadenas que describen lo que Estaba buscando hasta que lo encontré.

import java.security.*; for (Provider provider: Security.getProviders()) { System.out.println(provider.getName()); for (String key: provider.stringPropertyNames()) System.out.println("/t" + key + "/t" + provider.getProperty(key)); }