<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## **Multihash** Multihash 在ipfs中被廣泛應用。 定義如下: Multihash is a protocol for differentiating outputs from various well-established hash functions, addressing size + encoding considerations. It is useful to write applications that future-proof their use of hashes, and allow multiple hash functions to coexist. 簡單翻譯如下: Multihash 是一種協議,用于區分各種成熟哈希函數的輸出,解決大小+編碼的實際問題。 編寫應用程序來保證它們對哈希的使用永不過時,并允許多個哈希函數共存是很有用的。 采用Mutihash的根本原因是,有時哈希算法可能被證明是不安全的,這意味著它不再符合我們先前定義的特征(如一無二的、不可逆轉、不會被破解等)。這已經在sha1發生了(目前不同的明文通過MD5或SHA1后,可以生成相同的數字摘要,從而導致暴力破解的概率加大,從而造成不安全) 。隨著時間的流逝,其他算法可能證明不足以實現IPFS和其他分布式信息系統中的內容尋址。因此,為了支持多種密碼算法,我們需要能夠知道使用哪種算法來生成特定內容的哈希。 由此,Multihash 應運而生。 Multihash 由hash算法名稱+hash值長度+hash值共同構成。 multihash 是自描述散列本身包含描述其兩個長度和什么加密算法生成的它的元數據。系統使用Mutihah具有永不過時的功能,因為它們使用多重哈希來支持多種哈希算法,而不是依賴特定的哈希算法。 多重哈希遵循TLV 模式(type-length-value)。本質上,“原始哈希”的前綴是type所應用的哈希算法類型和hash的length。 * `type`:所述的識別碼的加密算法來生成的散列(例如的標識符`sha2-256`將是`18`\-`0x12`在十六進制) -參見multicodec 表對于所有標識符 * `length`:哈希的實際長度(如果使用`sha2-256`它將是`256`位,等于32個字節) * `value`:實際的哈希值 在ipfs的節點標識(identity)上,節點唯一標識為節點公鑰的mutihash。計算其mutihash時,type為IDENTITY(十六進制的0x00)或SHA2_256(十六進制0x18): ``` func IDFromPublicKey(pk ic.PubKey) (ID, error) { ? ? b, err := ic.MarshalPublicKey(pk) if err != nil { return "", err } var alg uint64 = mh.SHA2_256 if AdvancedEnableInlining && len(b) <= maxInlineKeyLength { alg = mh.IDENTITY } ? hash, _ := mh.Sum(b, alg, -1) return ID(hash), nil } ``` 根據ipfs文檔說明,采用IDENTITY的type,是為向后兼容,未來會廢棄(也就是將AdvancedEnableInlining置為false),這樣,未來根據公鑰產生的ID的hash type將是SHA2_256。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看