SubtleCrypto
完成salt(16B)
、iv(12B)
;PBKDF2-SHA256(默认 200,000 次)派 生 256-bit 密钥AES-GCM(256)
→ ciphertext || tag(16B)
"SDX1" || ver || hlen || header(JSON:{salt,iv,tag_len,meta}) || ciphertext || tag
.sdx
{
"alg": "AES-256-GCM",
"kdf": { "name": "PBKDF2-HS256", "iters": 200000 },
"salt": "<base64>",
"iv": "<base64>",
"tag_len": 16,
"meta": { "origName": "...", "mime": "..." }
}
Master Password → KDF → KEK → Unwrap → CEK → Encrypt Data
+--------+------+-------------+--------+------------+-----+
| Magic | Ver | Header Len | Header | Ciphertext | Tag |
| (4B) | (1B) | (2B LE) | (JSON) | (Variable) |(16B)|
+--------+------+-------------+--------+------------+-----+
{
"alg": "AES-256-GCM",
"kdf": {
"name": "PBKDF2-HS256",
"iters": 200000
},
"salt": "base64...",
"iv": "base64...",
"tag_len": 16,
"orig_name": "document.pdf",
"mime": "application/pdf",
"created": "2025-01-20T10:30:00Z"
}