【问题标题】:can json-ld be used to build a unique hash signature of a json object?json-ld 可以用来构建 json 对象的唯一哈希签名吗?
【发布时间】:2014-09-02 10:39:14
【问题描述】:

这几乎是 How to reliably hash JavaScript objects? 的副本,有人想要可靠地散列 javascript 对象;

既然 json-ld 规范已经过验证,我看到有一个规范化过程,他们宣传作为规范化 json 对象的潜在方法:

使用 RDF 数据集规范化算法规范化数据,然后将输出转储为规范化的 NQuads 格式。然后可以通过 SHA-256 或类似算法处理 NQuad,以获得数据集内容的确定性哈希。

构建 json 对象的散列一直很痛苦,因为像

sha1(JSON.stringify(object))

不工作或不保证在不同的实现中工作相同(键的顺序未定义示例)。

json-ld 是否像广告宣传的那样工作?将其用作散列对象的通用 json 规范化过程是否安全?这些对象可以是标准的 json 对象,还是需要一些 json-ld 装饰(@context,..)来规范化?

【问题讨论】:

    标签: json hash json-ld


    【解决方案1】:

    是的,规范化适用于 JSON-LD,但需要为对象提供上下文(通过 @context 属性),以便它们生成任何 RDF。以 NQuads 格式确定性输出的是 RDF(例如,可以对其进行散列)。

    如果 JSON-LD 文档中的属性不是通过 @context 定义的,那么它将在处理过程中被删除。 JSON-LD 要求您通过将文档中的属性与 URL 相关联来为它们提供全局含义(语义)。这些 URL 可以提供有关属性含义、它们的范围、域等的更多机器可读信息。通过这种方式,数据变得“链接”——您可以从一个 API 的上下文中理解 JSON 文档的含义另一个,您可以遍历文档(通过 HTTP)以查找更多信息。

    所以对主要问题的简短回答是“是的,您可以使用 JSON-LD 规范化来为 JSON 对象构建唯一哈希”,但是需要注意的是 JSON 对象必须是 JSON-LD 对象,它实际上构成了 JSON 的一个子集。规范化算法发明的主要原因之一是为了比较散列和数字签名图(JSON-LD 文档)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多