Можно ли использовать json-ld для создания уникальной хеш-подписи объекта json?

Это почти дубликат Как надежно хэшировать объекты JavaScript?, где кто-то хочет надежно хешировать объекты javascript;

Теперь, когда спецификация json-ld была проверена, я увидел, что существует процедура нормализации, которую они рекламируют как потенциальный способ нормализации объекта json:

нормализовать данные с помощью алгоритма нормализации набора данных RDF, а затем вывести вывод в нормализованный формат NQuads. Затем NQuad можно обработать с помощью SHA-256 или аналогичного алгоритма, чтобы получить детерминированный хэш содержимого набора данных.

Создание хеша объекта json всегда было проблемой, потому что что-то вроде

sha1(JSON.stringify(object))

не работает или не гарантируется одинаковая работа в разных реализациях (порядок ключей не определен в примере).

Работает ли json-ld как рекламируется? Безопасно ли использовать его в качестве универсальной процедуры нормализации json для хеширования объектов? Могут ли эти объекты быть стандартными объектами json или им нужны некоторые украшения json-ld (@context,..) для нормализации?


person Jerome WAGNER    schedule 11.07.2014    source источник


Ответы (1)


Да, нормализация работает с JSON-LD, но объектам должен быть задан контекст (через свойство @context), чтобы они могли создавать какие-либо RDF. Именно RDF детерминистически выводится в формате NQuads (и затем может быть, например, хеширован).

Если свойство в документе JSON-LD не определено через @context, оно будет удалено во время обработки. JSON-LD требует, чтобы вы предоставили глобальное значение (семантику) свойствам в вашем документе, связав их с URL-адресами. Эти URL-адреса могут предоставлять дополнительную машиночитаемую информацию о значении свойств, их диапазоне, домене и т. д. Таким образом, данные становятся «связанными» — вы оба можете понять значение документа JSON из одного API в контексте другой, и вы можете просматривать документы (через HTTP), чтобы найти дополнительную информацию.

Таким образом, краткий ответ на главный вопрос: «Да, вы можете использовать нормализацию JSON-LD для создания уникального хэша для объекта JSON», однако предостережение заключается в том, что объект JSON должен быть объектом JSON-LD, что на самом деле представляет собой подмножество JSON. Одной из основных причин изобретения алгоритма нормализации было сравнение графиков хеширования и цифровой подписи (документы JSON-LD).

person dlongley    schedule 13.07.2014