Gratis privatlivsværktøj
Krypter en fil i din browser
Vælg en fil, vælg en adgangssætning, og hent en krypteret kopi. AES-256-GCM, med nøglen afledt i din browser. Intet uploades, og det virker offline, når siden først er indlæst. Formatet er dokumenteret byte for byte herunder, så du ikke behøver at tage vores ord for noget.
Kører udelukkende i denne fane. Intet uploades, og det virker offline, når siden er indlæst.
Enhver fil. Store filer kræver hukommelse. Se de ærlige begrænsninger herunder.
Der findes ingen gendannelse. En glemt adgangssætning betyder en fil, ingen, heller ikke vi, nogensinde kan åbne.
Hver parameter, oplyst
- Ciffer
- AES-256-GCM (WebCrypto), 128-bit-tag
- Nøgleafledning
- PBKDF2-HMAC-SHA-256, 600.000 iterationer
- KDF-salt
- 16 byte, CSPRNG, nyt pr. fil
- GCM-nonce
- 12 byte, CSPRNG, ny pr. fil
- Autentificerede data
- hele den 42 byte store header, så manipulation med enhver oplyst parameter ødelægger dekrypteringen
- Kodning af adgangssætning
- UTF-8, NFC-normaliseret (så den samme sætning tastet på enhver enhed afleder den samme nøgle)
Ærlige begrænsninger
Dette er ikke Sealby-appens boksformat. Appen afleder nøgler med Argon2id kalibreret pr. enhed, pakker dem ind i Secure Enclave og gemmer indhold i benægtelige, opdelte containere. Intet af det kan en webside gøre. Denne side er et selvstændigt værktøj bygget på det, browsere tilbyder indbygget.
PBKDF2 er ikke hukommelseshård. Det er den eneste nøgleafledningsfunktion, browsere leverer indbygget, og 600.000 iterationer gør hvert gæt langsomt, men en GPU-maskine angriber den stadig langt hurtigere end Argon2id. Så beskyttelsen ligger i din adgangssætning: fire tilfældige ord eller flere, ikke en adgangskode.
WebCrypto krypterer i ét hug. Der er ingen streaming, så hele filen ligger i hukommelsen to til tre gange under behandlingen. Hundredvis af megabyte er fint på de fleste enheder. Til arkiver på flere gigabyte skal du bruge et desktopværktøj. Det krypterede output afslører desuden filens omtrentlige størrelse. Navnet er krypteret indeni, men størrelsen er ikke skjult.
Formatet, byte for byte
Alt, hvad en teknisk læser skal bruge for selv at verificere denne sides output eller dekryptere det på tyve linjer Python:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | version | 0x01 |
| 9 | algoritme | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | iterationer | uint32, big-endian (600.000) |
| 14–29 | salt | 16 byte |
| 30–41 | nonce | 12 byte |
| 42–slut | chiffertekst | AES-256-GCM af nyttelasten, AAD = byte 0–41; de sidste 16 byte er GCM-tagget |
Nyttelast før kryptering: [2 byte navnelængde, big-endian][filnavn, UTF-8][filbytes]. Det oprindelige filnavn rejser krypteret med og gendannes ved dekryptering.
Referencedekryptering (Python, cryptography-biblioteket)
import sys, hashlib, struct, unicodedata
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
raw = open(sys.argv[1], "rb").read()
assert raw[:8] == b"SBXF0001" and raw[8] == 1 and raw[9] == 1
iters = struct.unpack(">I", raw[10:14])[0] # 600000
salt, nonce, ct = raw[14:30], raw[30:42], raw[42:]
phrase = unicodedata.normalize("NFC", sys.argv[2]).encode()
key = hashlib.pbkdf2_hmac("sha256", phrase, salt, iters, 32)
plain = AESGCM(key).decrypt(nonce, ct, raw[:42]) # AAD = header
name_len = struct.unpack(">H", plain[:2])[0]
name = plain[2 : 2 + name_len].decode()
open(name, "wb").write(plain[2 + name_len :])
print("decrypted ->", name)Dette er demoen. Boksen er produktet.
Én fil, én adgangssætning, én side. Det er, hvad en browser kan. Sealby gør det ordentligt: Argon2id kalibreret til din enhed, nøgler i Secure Enclave og skjulte bokse uden nogen gemt liste eller optælling.
iPhone & iPad · iOS 17+ · Gratis