El servicio web RSA de Android y Java se maneja de forma diferente.
2. Para las pruebas, el cifrado y descifrado local en el servidor es normal, y el cifrado y descifrado en Android son normales. Sin embargo, la contraseña cifrada en el servidor (usando la misma clave pública) no se puede descifrar. el sistema Android (usando la misma clave privada).
3. Como no entiendo el algoritmo de cifrado RSA ni el proceso de cifrado de Java RSA, entiendo que la longitud de los caracteres de relleno durante el proceso de cifrado puede ser diferente, lo cual está relacionado con el Algoritmo RSA especificado durante el cifrado y descifrado.
4. Por ejemplo, utilice RSA estándar para cifrar con la clave pública en la máquina A y luego utilice "RSA/ECB/NoPadding" para descifrar con la clave privada en el sistema B. El resultado se puede descifrar, pero encontrará que hay muchos caracteres especiales delante del texto original descifrado, que son caracteres nulos completados antes del cifrado. Si el algoritmo RSA estándar todavía se usa para descifrar en el sistema B, entonces, por supuesto, en el sistema B; El mismo tipo de entorno de máquina virtual JDK es exactamente el mismo. El punto clave es que la máquina virtual (dalvik) utilizada en el sistema Android es diferente del JDK estándar de SUN, y su implementación RSA predeterminada también es diferente.
5. Para decirlo más claramente, al cifrar el "abc" original, se utilizan directamente los bytes obtenidos por "abc". La longitud del método getBytes() puede ser solo 3, pero el sistema primero lo coloca en una matriz de bytes de 512 bits, nuevo byte [512], y luego lo cifra. Pero utiliza la "contraseña de cifrado" al descifrar. getBytes() para descifrarlo. El texto original descifrado tiene naturalmente 512 datos de longitud, es decir, más de 500 bytes están llenos de otros caracteres vacíos excepto "abc".