ED2k_Hash

**eD2k 連結**（eD2k links (ed2k://) ）是一種超連結，用於指示在 eDonkey 網路上儲存的檔案。包括 eDonkey2000、eMule、MLDonkey、aMule 等在內的許多使用了 eDonkey 檔案分享協定的客戶端軟體，都可以用 eD2k 連結來管理網路上的檔案。

瀏覽器可以辨識 eD2k 連結，並遞交到 eMule、eDonkey2000 或其他的 eD2k 軟體中進行傳輸。eD2k 連結是最早被引入 P2P 檔案網路的連結之一。Magnet 連結現在也與 eD2k 連結類似，但 Magnet 連結不僅限於 eD2k Hash，而是可以使用其他的 Hash，諸如 SHA 或 MD5 等。

這些 Hash 碼，主要用於確保相同的檔案在網路上具有的相同的唯一標識，即使這些檔案儲存在不同的地方或擁有不同的名字。它通過使用該檔案的 Hash 函式（雜湊函式）來計算其校驗和。

eD2k 連結和很多 URI 協定一樣，可以被網路瀏覽器組態為自動關聯處理。安裝某些 eD2k 軟體時，「ed2k://」協定可能被自動註冊。於是在瀏覽器中點擊檔案的 eD2k 連結時，就能自動打開 eD2k 軟體並進行此檔案的下載。

## 連結格式

eD2k 連結的大致格式形如：

　
: **ed2k://|<類型>|<其他資訊>|/**

使用「|」分隔開各個區域。

注釋：

* ed2k://：協定處理方法。指明該協定是 eD2k 協定。
* <類型>：連結類型。有三種：file（檔案）、server（伺服器）、serverlist（伺服器列表）。
* <其他資訊>：具體的其他資訊。

### 檔案連結

* 典型的、基礎的 eD2k 檔案連結只包含必要的三樣資訊：檔名、檔案大小、檔案的 eD2k Hash。形如：

　
: **ed2k://|file|<檔名>|<檔案大小>|<檔案 Hash>|/**

以下是大小為 2868871 位元組（約 2.7MB）的官方 eMule v0.49c zip 壓縮檔的 eD2k 連結的例子：

　
: **ed2k://|file|eMule0.49c.zip|2868871|0F88EEFA9D8AD3F43DABAC9982D2450C|/**

* eD2k 連結也可以包含一個或多個來源的 IP 位址與埠，形如：

　
: **ed2k://|file|<檔名>|<檔案大小>|<檔案 Hash>|/|sources,<IP: 埠>|/**

例如：

　
: **ed2k://|file|eMule0.49c.zip|2868871|0F88EEFA9D8AD3F43DABAC9982D2450C|/|sources,202.89.123.6:4662|/**

* 在 eMule 中，eD2k 連結也可以包含根 Hash（Root Hash）值。根 Hash 提供了一個可靠的值用於 AICH（進階智慧型損壞處理），在傳輸的檔案有損壞或錯誤時進行糾正恢復。包含根 Hash 的 eD2k 連結形如：

　
: **ed2k://|file|<檔名>|<檔案大小>|<檔案 Hash>|h=<根 Hash>|/**

例如：

　
: **ed2k://|file|eMule0.49c.zip|2868871|0F88EEFA9D8AD3F43DABAC9982D2450C|h=SQ7LUTYUSMDBP2TVE2M7T6VUBLU324KF|/**

* 完整的 Hashset 可以確保檔案的正確，也可幫助發布新的與罕見的檔案。包含 Hashset 的 eD2k 連結形如：

　
: **ed2k://|file|<檔名>|<檔案大小>|<檔案 Hash>|p=<Hash Set>|/**

* 帶主機的 eD2k 連結形如：

　
: **ed2k://|file|<檔名>|<檔案大小>|<檔案 Hash>|/|sources,<主機名：埠>|/**

* eMule 也可相容帶 HTTP 來源的 eD2k 連結，形如：

　
: **ed2k://|file|<檔名>|<檔案大小>|<檔案 Hash>|s=<檔案的 HTTP 位址>|/**

### 伺服器連結

eDonkey 伺服器的 eD2k 連結和檔案的 eD2k 連結類似，它可以指示一個 eDonkey 伺服器位址，格式形如：

　
: **ed2k://|server|<IP>|<埠>|/**

例如：

　
: **ed2k://|server|207.44.222.51|4242|/**

### 伺服器列表連結

伺服器列表連結，用於從一個固定的 HTTP 位址添加 server.met 伺服器列表檔案。格式形如：

　
: **ed2k://|serverlist|<HTTP 位址>|/**

<HTTP 位址>：server.met 檔案的 HTTP 位址。

### Kad 節點列表連結

Kad 節點列表連結，用於從一個固定的 HTTP 位址添加 nodes.dat Kad 節點檔案。格式形如：

　
: **ed2k://|nodeslist|<HTTP 位址>|/**

<HTTP 位址>：nodes.dat 檔案的 HTTP 位址。

### 好友連結

好友連結，根據使用者 Hash 來添加好友。格式形如：

　
: **ed2k://|friend|<使用者名稱>|<使用者 Hash>|/**

官方 eMule 不支援 eD2k 好友連結添加好友功能，僅 Xtreme 及 Xtreme 的 Mods（如 ScarAngel、Mephisto 等）、CN Mod 等部分 eMule Mods 支援此功能。

## eD2k Hash

eD2k Hash 演算法是一種 MD4 演算法的變體。其函式是一個 MD4 Hash 列表（MD4 Hash List）的 MD4 根 Hash，但與 MD4 Hash 的結果不同:

檔案資料被分割成多個 9500KB 的 _chunks_ 塊（9728000 位元組或大約 9.28MB）和剩餘的一個 chunk。每個 chunk 都要計算 **128-bit MD4 校驗和**。如果檔案長度正好是 9500KB 的整倍數，剩餘的大小為 0 的 chunk 依然存在於 Hash 列表的末尾。將這些 chunk 的 MD4 校驗和按順序聯合起來，並使用 MD4 計算 Hash，可得到 eD2k Hash。對於僅由一個 chunk 組成的檔案（即檔案大小小於 9500KB），MD4 和 eD2k Hash 是完全相同的。

這種方法可以直接將 Hash 列表與原 eD2k Hash 進行驗證，而無需使用檔案塊來驗證。

## 參見

* MD4
* 雜湊函式
* 校驗和
* Magnet 連結
* URI
* eDonkey 網路

## 注釋

## 參考資料

## 外部連結

* emule forum guides （頁面存檔備份，存於網際網路檔案館） How to remove the ed2k link protocol association in windows.
* aMule wiki: ed2k link （頁面存檔備份，存於網際網路檔案館）.
* emule project （頁面存檔備份，存於網際網路檔案館） Ed2k link formats supported by emule client.
* ED2K tools - ED2K\_Hash （頁面存檔備份，存於網際網路檔案館） Tool to create ED2K hashes.
* Phantom P2P （頁面存檔備份，存於網際網路檔案館） eD2k Links Provider