Как криптографически хэшировать объект JSON?

Следующий вопрос сложнее, чем может показаться на первый взгляд.

Предположим, что у меня есть произвольный объект JSON, который может содержать любое количество данных, включая другие вложенные объекты JSON. Я хочу получить криптографический хэш / дайджест данных JSON без учета фактического форматирования JSON (например: игнорирование новой строки и различий в интервалах между токенами JSON).

Последняя часть является обязательной, поскольку JSON будет генерироваться / считываться множеством (де) сериализаторов на разных платформах. Я знаю как минимум одну библиотеку JSON для Java, которая полностью удаляет форматирование при чтении данных во время десериализации. Таким образом, он нарушит хэш.

Вышеупомянутое предложение о произвольных данных также усложняет ситуацию, поскольку не позволяет мне брать известные поля в заданном порядке и объединять их до хеширования (подумайте примерно, как некриптографический метод hashCode () в Java работает).

Наконец, хеширование всей строки JSON в виде блока байтов (до десериализации) также нежелательно, поскольку в JSON есть поля, которые следует игнорировать при вычислении хэша.

I ' Я не уверен, что есть хорошее решение этой проблемы, но я приветствую любые подходы или мысли =)

49
задан Jason Nichols 12 January 2011 в 05:44
поделиться