Descripción del caso de firma digital
La transmisión de datos en red generalmente utiliza algoritmos de cifrado simétrico
Debido a problemas de eficiencia, los algoritmos de cifrado asimétrico solo se utilizan para cifrar las claves secretas de los algoritmos de cifrado simétrico y para firmas digitales
p>Antes de la operación, tanto el servidor como el cliente tienen las claves públicas de ambas partes
Clave pública RSA de Android-->Enviar al servidor
RSA del servidor clave pública- ->Enviada al cliente
Por ejemplo, el cliente verifica la autenticidad del servidor
Cliente Android (tiene clave AES)
Usa asimétrica algoritmo de cifrado Es decir, la clave pública RSA del servidor cifra la clave AES del cliente Android
Luego, Http Get solicita y envía la clave secreta AES del cliente Android al servidor
Después de que el servidor recibe la solicitud, use su propia clave privada RSA para descifrar la solicitud para obtener la clave AES de Android y luego firme los datos enviados al cliente de Android, como byte [] datos, es decir, firme
Use firmar y datas junto con el cliente de Android La clave AES se cifra y luego se envía al cliente de Android
Después de recibirla, el cliente de Android usa su propia clave AES para descifrar todo el paquete de datos. se separa y se obtienen el signo y los datos, y luego verifica el signo. El método de verificación es utilizar la clave pública del servidor con el parámetro signo para la verificación de la firma.
La clave privada RSA del servidor se utiliza para firmar. el signo, debido a que la longitud del signo es fija (y la clave secreta inicializada tiene la misma longitud), por lo que es fácil separar datos
Por ejemplo, después del descifrado, str.substring() puede separar datos y firmar