Gratis integritetsverktyg
Kryptera en fil i din webbläsare
Välj en fil, välj en lösenfras och ladda ner en krypterad kopia. AES-256-GCM, med nyckeln härledd i din webbläsare. Inget laddas upp, och det fungerar offline när sidan väl laddats. Formatet är dokumenterat byte för byte nedan, så att du inte behöver tro oss på vårt ord om någonting.
Körs helt i den här fliken. Ingenting laddas upp, och det fungerar offline när sidan laddats.
Vilken fil som helst. Stora filer kräver minne. Se de ärliga begränsningarna nedan.
Det finns ingen återställning. En glömd lösenfras betyder en fil som ingen, inte heller vi, någonsin kan öppna.
Varje parameter, redovisad
- Chiffer
- AES-256-GCM (WebCrypto), 128-bitars tagg
- Nyckelhärledning
- PBKDF2-HMAC-SHA-256, 600,000 iterationer
- KDF-salt
- 16 byte, CSPRNG, nytt per fil
- GCM-nonce
- 12 byte, CSPRNG, nytt per fil
- Autentiserade data
- hela det 42 byte stora huvudet, så att manipulera någon angiven parameter förstör dekrypteringen
- Kodning av lösenfras
- UTF-8, NFC-normaliserad (så att samma fras skriven på vilken enhet som helst ger samma nyckel)
Ärliga begränsningar
Det här är inte Sealby-appens valvformat. Appen härleder nycklar med Argon2id kalibrerad per enhet, kapslar in dem i Secure Enclave och lagrar innehåll i förnekbara, uppdelade behållare. Inget av det kan en webbsida göra. Den här sidan är ett fristående verktyg byggt på det webbläsare erbjuder inbyggt.
PBKDF2 är inte minneshård. Det är den enda nyckelhärledningsfunktion som webbläsare levererar inbyggt, och 600,000 iterationer gör varje gissning långsam, men en GPU-rigg attackerar den ändå långt snabbare än Argon2id. Så skyddet ligger i din lösenfras: fyra slumpmässiga ord eller fler, inte ett lösenord.
WebCrypto krypterar i ett svep. Det finns ingen strömning, så hela filen ligger i minnet två till tre gånger om under bearbetningen. Hundratals megabyte går bra på de flesta enheter. För arkiv på flera gigabyte, använd ett skrivbordsverktyg. Den krypterade utdatan avslöjar också filens ungefärliga storlek. Namnet är krypterat inuti, men storleken är inte dold.
Formatet, byte för byte
Allt en teknisk läsare behöver för att verifiera sidans utdata på egen hand, eller dekryptera den med tjugo rader Python:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | version | 0x01 |
| 9 | algoritm | 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 | chiffertext | AES-256-GCM av nyttolasten, AAD = byte 0–41; de sista 16 byten är GCM-taggen |
Nyttolast före kryptering: [2 byte namnlängd, big-endian][filnamn, UTF-8][filens byte]. Originalfilnamnet följer med krypterat; vid dekryptering återställs det.
Referensdekryptor (Python, biblioteket cryptography)
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)Det här är demon. Valvet är produkten.
En fil, en lösenfras, en sida. Det är vad en webbläsare klarar. Sealby gör det ordentligt: Argon2id kalibrerad för din enhet, nycklar i Secure Enclave och dolda valv utan någon sparad lista eller räkning.
iPhone & iPad · iOS 17+ · Gratis