Estudio de caso de firma digital
La transmisión de datos en red suele utilizar 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
Antes de la operación, el servidor y el cliente tienen las claves públicas de ambas partes
La clave pública RSA de Android --gt se envía al servidor para su uso
Si el cliente autentica el servidor Para garantizar la autenticidad, la clave pública RSA del cliente Android se envía al cliente para su uso. p> Clave pública RSA del servidor --gt; enviada al cliente para su uso
Por ejemplo, el cliente verifica la autenticidad del servidor
Cliente Android (usando la clave AES)
Utiliza un algoritmo de cifrado asimétrico, es decir, la clave pública RSA del servidor a la clave AES de Android. Cifre la clave AES del cliente Android
Luego envíe una solicitud Http Get y envíe la clave AES del cliente Android al servidor
Después de que el servidor recibe la solicitud, utiliza su propio RSA El privado La clave descifra la solicitud. Obtenga la clave AES de Android y luego firme los datos (como los datos del byte []) enviados al cliente de Android
Utilice la clave AES de Android para cifrar la firma y los datos, y luego envíelos a Android El cliente realiza cifrado. Cifrar y luego enviar al cliente de Android
Después de recibirlo, el cliente de Android usa su propia clave AES para descifrar todo el paquete de datos, luego separa los datos, obtiene la firma y los datos, luego verifica la firma. y usos La clave pública del servidor se utiliza para la verificación. La clave pública se utiliza junto con el parámetro sign para la verificación de la firma
La clave privada RSA del servidor se utiliza para firmar el signo porque la longitud del signo es fija (igual a la longitud de la clave de inicialización). , Es fácil separar los datos
p>Por ejemplo, str.substring () descifrado puede separar datos y firmar