iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Mobile Development

Xiang教你進階Swift從有到精系列 第 16

Day16 - JWE Compact String & Json Flattened

  • 分享至 

  • xImage
  •  

JWE Compact String 格式

結構與組成

  • 五個 Base64URL 編碼的部分
  • 各部分的詳細說明(標頭、加密密鑰、初始化向量、密文、認證標籤)
`eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ`.
`OKOawDo13gRp2ojaHV7LFpZcgV7T6DVZKTyKOMTYUmKoTCVJRgckCL9kiMT03JGeipsEdY3mx_etLbbWSrFr05kLzcSr4qKAq7YN7e9jwQRb23nfa6c9d-StnImGyFDbSv04uVuxIp5Zms1gNxKKK2Da14B8S4rzVRltdYwam_lDp5XnZAYpQdb76FdIKLaVmqgfwX7XWRxv2322i-vDxRfqNzo_tETKzpVLzfiwQyeyPGLBIO56YJ7eObdv0je81860ppamavo35UgoRdbYaBcoh9QcfylQr66oc6vFWXRcZ_ZT2LawVCWTIy3brGPi6UklfCpIMfIjf7iGdXKHzg`.
`48V1_ALb6US04U3b`.
`5eym8TW_c8SuK0ltJ3rpYIzOeDQz7TALvtu6UG9oMo4vpzs9tX_EFShS8iB7j6jiSdiwkIr3ajwQzaBtQD_A`.
`XFBoMYUZodetZdvTiFvSkQ`

JSON Flattened 格式

結構與組成

  • JSON 對象的組成
{
 "alg": "HS256",
 "enc": "A128CBC-HS256",
 "protected": "{ \"EncryptedHeader\": \"eyJhbGciOiAiUzI1NiIsInR5cCI6IkpXVCJ9.\", \"EncryptedContent\": \"eyJpc3MiOiAiSldUIn0.VGltZXN0YW1wIiwibmJmIjoxNTY0NTU4MDA5LCJqdGkiOiI3ODcyNGE4MCIsInJlYWxtIjpbIlVCMiJdLCJuYmYiOjE1MDQ0ODQwMDksImF1dGgiOiAiYWRtaW4ifQ.\"}",
 "iv": "",
 "ciphertext": "eyJ1c2VyX2lkIjoyMSwiaXNzIjo4NCI7...",
 "tags": []
}

Compact String 與 JSON Flattened 的比較

  1. 可讀性:

    • Compact String:較難直接閱讀,需要解析分割。
    • JSON Flattened:結構清晰,易於人類閱讀和理解。
  2. 大小:

    • Compact String:通常更緊湊,適合在URL中傳輸。
    • JSON Flattened:較為冗長,但提供更多結構化信息。
  3. 靈活性:

    • Compact String:固定格式,不易擴展。
    • JSON Flattened:可以輕鬆添加額外字段或元數據。
  4. 使用場景:

    • Compact String:適合需要簡潔表示的場景,如URL參數。
    • JSON Flattened:適合需要更多元數據或靈活性的場景。
  5. 解析複雜度:

    • Compact String:需要自定義解析邏輯來提取各部分。
    • JSON Flattened:可直接使用標準JSON解析器處理。
  6. 標準兼容性:

    • Compact String:完全符合JWE規範。
    • JSON Flattened:提供了JWE的另一種表示方式,增加了靈活性。

上一篇
Day15 - 實作 JWE 加解密(2)
下一篇
Day17 - 什麼是 JWS
系列文
Xiang教你進階Swift從有到精30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言