Quiero crear una aplicación web y una aplicación móvil hermana (usando reaccion nativa) que use el cifrado del lado del cliente. El cifrado sería para las entradas de texto escritas diariamente que el usuario podría crear y editar. Si el usuario se desconecta, quiero que aún puedan editar las entradas actualmente en su dispositivo y crear nuevas entradas, y quiero que esas modificaciones se transfieran al servidor cuando el usuario vuelva a estar en línea.
Si el usuario ingresa texto sin conexión para un día en particular en un dispositivo, luego se olvida e ingresa texto diferente sin conexión en otro dispositivo para el mismo día, me gustaría que las dos entradas se combinen en una entrada cuando los dispositivos regresen en línea. ¿Hay algún tipo de magia que me permita hacer eso en el servidor con los archivos cifrados?
De lo contrario, me gustaría que los dispositivos envíen un hash del texto cifrado como estaba antes de las ediciones. Cuando el texto actualizado llega al servidor, enviaría el hash y lo compararía con el hash del texto cifrado que estaba almacenado actualmente. Cuando llegue la segunda actualización, el hash no coincidirá con el texto almacenado y el texto almacenado se enviará de vuelta al cliente para que se reconcilie. ¿Existen protocolos / bibliotecas por ahí para este tipo de cosas? Prefiero no reinventar la rueda.