數位簽名
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
數位簽章基本類型可讓您驗證資料是否遭到竄改。簽署資料的真實性和完整性,但不保證其機密性。這項技術屬於非對稱式,也就是使用一對金鑰 (公開金鑰和私密金鑰)。
數位簽章基本體具有下列屬性:
- 真實性:除非您擁有私密金鑰,否則無法建立通過
PublicKeyVerify.Verify(signature, message) 驗證的簽章。
- 非對稱:建立簽章時使用的金鑰與驗證簽章時使用的金鑰不同。這樣一來,您就能將公開金鑰發布給無法自行建立簽名的各方,供他們驗證簽名。
如果不需要非對稱性,請考慮改用更簡單且更有效率的 MAC 基本類型。
數位簽章功能在 Tink 中以一對基本體表示:
- 用於簽署資料的 PublicKeySign
- PublicKeyVerify,用於驗證簽章
選擇車鑰類型
我們建議在多數情況下使用 ML_DSA_65 或 ECDSA_P256,但也有多種選項。一般來說,下列情況成立:
對於下列非後量子演算法,您可能在不久的將來就必須變更金鑰類型。
- ECDSA_P256 是最廣泛使用的選項,也是合理的預設值。請注意,ECDSA 簽章是可延展的。
- ED25519 會建立決定性簽章,且效能優於 ECDSA_P256。
- RSA_SSA_PKCS1_3072_SHA256_F4 會建立確定性簽章,並提供最佳驗證效能 (但簽署速度遠慢於 ECDSA_P256 或 ED25519)。
最低安全性保證
- 待簽署的資料長度不限
- 針對橢圓曲線架構的自適性所選訊息攻擊,提供 128 位元安全等級
- 針對以 RSA 為基礎的架構,提供 112 位元安全等級,防範自適性所選訊息攻擊 (允許 2048 位元金鑰)
延展性
如果攻擊者可以為已簽署的訊息建立不同的有效簽章,簽章機制就具有延展性。雖然在大多數情況下這不會造成問題,但在某些情況下,程式設計師會隱含地假設有效簽章是唯一的,這可能會導致非預期的結果。
用途範例
請參閱「我想以數位方式簽署資料」。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2026-03-23 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2026-03-23 (世界標準時間)。"],[],["Digital signatures ensure data authenticity and integrity using asymmetric key pairs (public and private). `PublicKeySign` signs data, while `PublicKeyVerify` checks signatures. Key options include the widely used ECDSA_P256, faster ED25519, and high-verification-performance RSA_SSA_PKCS1_3072_SHA256_F4. Signatures offer 128-bit security (elliptic curves) or 112-bit security (RSA). ECDSA signatures are malleable, allowing attackers to forge valid signatures. If asymmetry is not needed consider using MAC.\n"]]