Como criptografar hash um objeto JSON?

A pergunta a seguir é mais complexa do que parece à primeira vista.

Suponha que eu tenho um objeto JSON arbitrário, que pode conter qualquer quantidade de dados, incluindo outros objetos JSON aninhados. O que eu quero é um hash / resumo criptográfico dos dados JSON, sem considerar a própria formatação JSON real (por exemplo: ignorando novas linhas e diferenças de espaçamento entre os tokens JSON).

A última parte é um requisito, pois o JSON será gerado / lido por uma variedade de (des) serializadores em várias plataformas diferentes. Conheço pelo menos uma biblioteca JSON para Java que remove completamente a formatação ao ler dados durante a desserialização. Como tal, ele quebrará o hash.

A cláusula de dados arbitrários acima também complica as coisas, pois me impede de pegar os campos conhecidos em uma determinada ordem e concatená-los antes de ter (pense aproximadamente como o método hashCode (não criptográfico de Java funciona)).

Por fim, o hash de toda a String JSON como um pedaço de bytes (antes da desserialização) também não é desejável, pois existem campos no JSON que devem ser ignorados ao calcular o hash.

Não tenho certeza se existe uma boa solução para esse problema, mas agradeço qualquer abordagem ou pensamento =)

questionAnswers(7)

yourAnswerToTheQuestion