JWT編碼器(生成與簽名)

根據Header和Payload的JSON,使用HS256、HS384或HS512生成HMAC簽名的JWT(JSON Web Token),全部在瀏覽器內完成。包括金鑰在內的輸入內容不會發送到伺服器。

支援的HMAC簽名演算法一覽

演算法 雜湊函式 簽名長度 說明
HS256 SHA-256 256位(32位元組) 使用最廣泛的預設HMAC簽名,是OAuth 2.0、OpenID Connect ID令牌等許多實現的標準選擇。
HS384 SHA-384 384位(48位元組) 當需要比HS256更長的簽名以提升安全餘量時可選用的中間選項。
HS512 SHA-512 512位(64位元組) 簽名長度最長,通常與足夠長的隨機金鑰搭配使用。

使用提示

  • 生成的JWT僅通過瀏覽器內的Web Crypto API簽名,包含金鑰在內的輸入內容不會發送到toolbase.cc的伺服器。
  • 切換籤名演算法(HS256/HS384/HS512)會自動更新Header JSON中的alg欄位。若需新增kid等其他宣告,可直接編輯Header。
  • 本工具僅支援HMAC(對稱金鑰)方式。如需RS256、ES256等公鑰方式的簽名,請使用Node.js等伺服器端的庫。
  • 編輯Header或Payload後,請務必再次點選"生成JWT",否則顯示的仍是編輯前內容生成的舊JWT。
  • 如需立即確認生成的JWT內容,可將其貼上到姊妹工具JWT解碼器中檢視Header和Payload。

常見問題

不建議這樣做。雖然簽名處理本身在瀏覽器內完成且是安全的,但將金鑰輸入瀏覽器工具這一行為本身並不符合生產環境的安全方針。本工具主要用於API開發階段的除錯或學習用途。

HS256是傳送方與接收方共享同一金鑰的對稱金鑰方式,RS256則是用私鑰簽名、用公鑰驗證的公鑰(非對稱金鑰)方式。本工具僅支援HS256、HS384、HS512這三種HMAC方式,不支援RS256、ES256等公鑰方式。

可以,Header JSON可以直接編輯。但如果所選演算法(實際用於計算簽名的演算法)與alg欄位的值不一致,其他實現在驗證該JWT時可能會報錯,因此請務必保持兩者一致。

您可以將生成後的JWT字串貼上到姊妹工具「JWT解碼器」中,立即檢視Header和Payload的內容。不過簽名本身的有效性,只能由持有相同金鑰的伺服器端驗證邏輯最終確認。
ツールくん

閒話 ― 為什麼JWT的簽名可以「僅在瀏覽器內」完成

JWT的簽名演算法大致分為兩類:傳送方和接收方共享同一金鑰的「對稱金鑰方式(HMAC,即HS256/HS384/HS512)」,以及用私鑰簽名、用公鑰驗證的「公鑰加密方式(RS256、ES256等)」。前者可以藉助W3C標準化的Web Crypto API(SubtleCrypto)中的crypto.subtle.sign(),無需任何外部庫即可在瀏覽器內完成計算,因此本工具刻意只支援HMAC方式。

HMAC簽名的安全性完全取決於金鑰是否難以被猜到,而與Header或Payload的內容無關。RFC 7518(JSON Web Algorithms)建議HS256的金鑰長度應至少為256位(32位元組);若使用短單詞或字典中常見的字串作為金鑰,簽名就有被暴力破解偽造的風險。在實際生產環境中,應使用隨機數生成器生成的足夠長的隨機字串作為金鑰。

本工具是面向開發者的實用工具,主要用於API開發時的除錯或測試Webhook簽名驗證邏輯。您輸入的金鑰僅在瀏覽器記憶體中處理,不會向外部發送,但共享裝置或瀏覽器擴充套件收集剪貼簿或輸入內容的風險並非為零。強烈建議即使只是為了除錯,也不要將生產環境中實際使用的金鑰輸入此類工具。