¿Por qué las personas usan bouncycastle en lugar de Java Cryptography Extension? ¿Cuál es la diferencia?¿Por qué las personas usan bouncycastle en lugar del proveedor JCE integrado de Java? ¿Cuál es la diferencia?
Respuesta
BouncyCastle tiene muchos más cipher suites and algorithms que el default JCE proporcionado por Sun.
Además de eso, BouncyCastle tiene muchas utilidades para leer formatos arcanos como PEM y ASN.1 que ninguna persona en su sano juicio querría reescribir.
Sun nunca tuvo la intención de ser un proveedor exhaustivo de cifrados. Es por eso que JCE utiliza el marco de proveedor que BC admite http://bouncycastle.org/specifications.html#install. Cualquier usuario de BC sería prudente usarlo a través de las API de JCE cuando sea posible. – nicerobot
En el servidor o en el escritorio, no veo ninguna razón para utilizar BC a menos que tenga que lidiar con cifrados heredados o formatos no admitidos por Sun JCE.
Sin embargo, muchos JRE no vienen con un proveedor de JCE, como en entornos móviles o integrados. BC es útil en tales casos.
En el servidor definitivamente hay una razón, si su servidor está usando TLS y usted se preocupa por la seguridad (si no lo hace, ¿por qué está utilizando TLS en absoluto?). Las suites de cifrado incluidas con JCE solo incluyen AES en modo CBC, que tiene un par de problemas conocidos: http://googleonlinesecurity.blogspot.dk/2013/11/a-roster-of-tls-cipher-suites-weaknesses.html . –
FYI Esto no es cierto Java8 (De Oracle) al menos. –
Bouncy Castle es de origen australiano, y por lo tanto no está sujeto al Export of cryptography from the United States.
Es útil si se encuentra fuera de los Estados Unidos y necesita administrar tamaños de clave mayores que los permitidos por dicha restricción. En ese caso, no está permitido utilizar software de Estados Unidos para eso.
Me pregunto cuántas restricciones realmente permanecen, anno 2016? Por lo que yo entiendo, ya no existe una restricción en el tamaño de la clave siempre que se registre en la Oficina de Industria y Seguridad (BIS) del Departamento de Comercio de EE. UU., Algo que supongo que Oracle ya está haciendo. Pero las regulaciones son crípticas (juego de palabras). – peterh
Uf, si estoy fuera de los EE. UU., No necesito que se me permita nada. El proyecto puede necesitar permiso para enviar algo. –
- 1. pixel.gif, ¿por qué las personas lo usan?
- 2. ¿Por qué algunas personas usan el método de clase # en lugar de Class.method en la correspondencia?
- 3. ¿Por qué las personas usan ATL para la programación COM?
- 4. ¿Por qué las personas usan valores de magia en lugar de nulo en su código?
- 5. ¿Por qué las personas usan linq en sql?
- 6. ¿Por qué las personas usan Puppet/Chef con Amazon Cloud Formation en lugar de usar CloudInit?
- 7. ¿Por qué las personas usan jQuery para operaciones básicas?
- 8. ¿Por qué las personas usan Command-line en lugar de IDE?
- 9. Por qué se necesita MD5 para la inicialización de JCE
- 10. ¿Por qué las personas siempre usan la reasignación de variables de instancia en Objective-C (es decir, iPhone)?
- 11. ¿Por qué las personas usan la expresión regular para el correo electrónico y otras validaciones complejas?
- 12. HTML5: ¿Por qué las personas no usan "ContentEditable" para sus sitios web Comentario de entrada?
- 13. ¿Por qué razones las personas eligen Ruby sobre Java?
- 14. Proveedores Java JCE: ¿qué significa "implementación de sala limpia"?
- 15. ¿Por qué las personas usan __ (doble guión bajo) tanto en C++
- 16. ¿Por qué las personas usan enumeraciones en C++ como constantes mientras pueden usar const?
- 17. ¿Por qué deberíamos colocar las interfaces con las clases que las usan en lugar de las que las implementan?
- 18. ¿BouncyCastle tiene un servicio SecureRandom?
- 19. ¿Por qué las personas siguen creando fuentes RSS?
- 20. ¿Por qué java applets/javafx no se usan ampliamente? (por qué no debería usarlos para RIA)
- 21. Cómo firmar un proveedor de seguridad JCE personalizado
- 22. ¿Por qué las expresiones regulares de Ruby usan \ A y \ z en lugar de^y $?
- 23. ¿Por qué las personas no usan LabVIEW para otros propósitos que no sean la adquisición de datos y la virtualización?
- 24. Implementación del proveedor de OAuth en Java
- 25. ¿Por qué algunas personas usan "Ninguno" como miembro de la enumeración?
- 26. ¿Por qué a las personas scala no les gusta la anotación?
- 27. ¿Por qué es preferible utilizar listas en lugar de matrices en Java?
- 28. ¿Qué hosting usan normalmente las personas para publicar el sitio web de Django?
- 29. ¿Cuál es la diferencia entre el modo de canalización "clásico" e "integrado" en IIS7?
- 30. Pthread: ¿Por qué las personas se molestan en utilizar pthread_exit?
JCE es una API estándar que cualquier algoritmo de criptografía puede implementar para permitir que sea accesible sin codificar dependencias en el proveedor. En otras palabras, al utilizar las API de JCE, puede cambiar las cifras y los proveedores de cifrado sin cambiar su código (en muchos casos). BC es un proveedor, lo que significa que implementa cifrados a los que se puede acceder a través de las API de JCE. Si aparece otro proveedor que implementa el algoritmo que desea mejor que BC o un algoritmo nuevo y más sólido, puede cambiar sin cambiar su código (probablemente). – nicerobot