¿Cómo hash criptográficamente un objeto JSON?

La siguiente pregunta es más compleja de lo que parece.

Suponga que tengo un objeto JSON arbitrario, uno que puede contener cualquier cantidad de datos, incluidos otros objetos JSON anidados. Lo que quiero es un resumen / resumen criptográfico de los datos JSON, sin tener en cuenta el formato JSON real en sí (por ejemplo: ignorar las nuevas líneas y las diferencias de espaciado entre los tokens JSON).

La última parte es un requisito, ya que el JSON será generado / leído por una variedad de (des) serializadores en varias plataformas diferentes. Sé de al menos una biblioteca JSON para Java que elimina por completo el formato al leer datos durante la deserialización. Como tal, romperá el hash.

La cláusula de datos arbitrarios anterior también complica las cosas, ya que me impide tomar campos conocidos en un orden determinado y concatenarlos antes de la conversión (piense aproximadamente cómo funciona el método hashCode () no criptográfico de Java).

Por último, el hash de toda la cadena JSON como un fragmento de bytes (antes de la deserialización) tampoco es deseable, ya que hay campos en el JSON que deben ignorarse al calcular el hash.

No estoy seguro de que haya una buena solución a este problema, pero agradezco cualquier enfoque o pensamiento =)

Respuestas a la pregunta(7)

Su respuesta a la pregunta