Así que Java tiene un modo llamado RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING
. ¿Qué significa eso?
RFC3447 , Estándares de criptografía de clave pública (PKCS) # 1: RSA Especificaciones de criptografía Versión 2.1 , sección 7.1.2 Operación de descifrado dice que Hash y MGF son opciones para RSAES-OAEP-DECRYPT. MGF es su propia función, definida en Sección B.2.1 MGF1 y que también tiene su propia "opción" de Hash.
Tal vez se supone que la "opción" de Hash en RSAES-OAEP-DECRYPT y MGF1 es la misma o quizás no lo sea, no está claro para mí. Si lo son, entonces supongo que cuando tienes RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING
eso significa que sha256 debería usarse para ambos. Pero si no se supone que son iguales, entonces se podría usar sha256 para RSAES-OAEP-DECRYPT y, por ejemplo, sha1 para MGF1. Y si ese es el caso, ¿para qué función se debe usar sha256? ¿Y qué algoritmo hash se supone que debe usarse para la otra función?
¿Y qué significa el BCE en este contexto? ECB es un modo de cifrado de bloque simétrico. Libro de códigos electrónicos. ¿Tal vez se supone que significa que Java trata con texto sin formato que son más grandes que el módulo? ¿Tal vez tal vez divide el texto simple en partes que son tan grandes como el módulo y luego encripta cada una con RSA y las concatena juntas? Solo estoy adivinando ...