diff --git a/locales/locales.js b/locales/locales.js index b54c8d41..64b7f319 100644 --- a/locales/locales.js +++ b/locales/locales.js @@ -9,6 +9,7 @@ import es_ES from "./es_ES"; import cs_CS from "./cs_CS"; import tr_TR from "./tr_TR"; import ja_JP from "./ja_JP"; +import ro_RO from "./ro_RO"; const locales = { en_US, @@ -21,7 +22,8 @@ const locales = { es_ES, cs_CS, tr_TR, - ja_JP + ja_JP, + ro_RO }; export default locales; diff --git a/locales/ro_RO/docs.md b/locales/ro_RO/docs.md new file mode 100644 index 00000000..41e8a589 --- /dev/null +++ b/locales/ro_RO/docs.md @@ -0,0 +1,640 @@ +# [Introducere](#introducere) + +--- + +Hat.sh este o aplicație web gratuită [opensource] care oferă criptare sigură a fișierelor în browser. + +
+ +# [Caracteristici](#caracteristici) + +--- + +### Securitate + +- [XChaCha20-Poly1305] - pentru criptare simetrică. +- [Argon2id] - pentru derivarea cheii bazate pe parolă. +- [X25519] - pentru schimbul de chei. + +Biblioteca libsodium este folosită pentru toți algoritmii criptografici. [Detalii tehnice aici](#detalii-tehnice). + +
+ +### Confidențialitate + +- Aplicația rulează local în browserul tău. +- Niciun fel de date nu sunt colectate sau trimise către nimeni.​ + +
+ +### Funcționalitate + +- Criptare/decriptare sigură a fișierelor cu parole sau chei. +- Generare sigură a parolelor aleatorii. +- Generare perechi de chei asimetrice. +- Schimb de chei autentificate. +- Estimarea puterii parolei. + +
+ +# [Instalare](#instalare) + +--- +Este ușor să găzduiești și să implementezi hat.sh, poți face asta fie cu npm, fie cu docker. + +Dacă dorești să găzduiești aplicația, te rugăm să urmezi aceste instrucțiuni: + +
+ +## Cu npm + +Înainte de instalare, asigură-te că rulezi [nodejs](https://nodejs.org/en/) și ai [npm](https://www.npmjs.com/) instalat. + +
+ +1. clonează repo-ul de pe github + +```bash +git clone https://github.com/sh-dv/hat.sh.git hat.sh +``` + +2. mută-te în folder + +```bash +cd hat.sh +``` + +3. instalează dependențele + +```bash +npm install +``` + +4. construiește aplicația + +```bash +npm run build +``` + +5. pornește hat.sh + +```bash +npm run start +``` + +aplicația ar trebui să ruleze pe portul 3391. +
+ +dacă dorești să rulezi aplicația în mediul de dezvoltare, rulează: + +
+ +```bash +npm run dev +``` + +
+ +## Cu docker + +Poți instala aplicația cu docker în mai multe moduri. Ești liber să alegi metoda preferată. + +
+ +- #### instalează de pe docker hub + +1. descarcă imaginea de pe docker hub + +```bash +docker pull shdv/hat.sh:latest +``` + +2. rulează containerul + +```bash +docker run -d -p 3991:80 shdv/hat.sh +``` + +
+ +- #### Construiește o imagine din codul sursă + +1. clonează repo-ul de pe github + +```bash +git clone https://github.com/sh-dv/hat.sh.git hat.sh +``` + +2. mută-te în folder + +```bash +cd hat.sh +``` + +3. construiește imaginea folosind docker + +```bash +docker build . -t shdv/hat.sh +``` + +4. rulează containerul + +```bash +docker run -d -p 3991:80 shdv/hat.sh +``` + +
+ +- #### Folosind docker compose + +1. clonează repo-ul de pe github + +```bash +git clone https://github.com/sh-dv/hat.sh.git hat.sh +``` + +2. mută-te în folder + +```bash +cd hat.sh +``` + +3. construiește imaginea folosind docker compose + +```bash +docker compose build +``` + +4. rulează containerul + +```bash +docker compose up +``` + +
+ +Aplicația ar trebui să ruleze pe portul 3991. + +hat.sh este disponibil și ca imagine Docker. Poți găsi pe [Docker Hub]. + +
+ +# [Utilizare](#utilizare) + +--- + +## Criptarea Fișierelor + +- ### folosind o parolă + +1. Deschide hat.sh. +2. Navighează la panoul de Criptare. +3. Trage și Plasează sau Selectează fișierele pe care dorești să le criptezi. +4. Introdu o parolă sau generează una. +5. Descarcă fișierul criptat. + +> Ar trebui să folosești întotdeauna o parolă puternică! + +- ### folosind chei publice și private + +1. Deschide hat.sh. +2. Navighează la panoul de Criptare. +3. Trage și Plasează sau Selectează fișierele pe care dorești să le criptezi. +4. Alege metoda cheie publică. +5. Introdu sau încarcă cheia publică a destinatarului și cheia ta privată. + dacă nu ai chei publice și private, poți genera o pereche de chei. +6. Descarcă fișierul criptat. +7. Partajează cheia ta publică cu destinatarul pentru ca acesta să poată decripta fișierul. + +> Nu împărtăși niciodată cheia ta privată cu nimeni! Doar cheile publice ar trebui schimbate. + +
+ +## Decriptarea Fișierelor + +- ### folosind o parolă + +1. Deschide hat.sh. +2. Navighează la panoul de Decriptare. +3. Trage și Plasează sau Selectează fișierele pe care dorești să le decriptezi. +4. Introdu parola de criptare. +5. Descarcă fișierul decriptat. + +- ### folosind chei publice și private + +1. Deschide hat.sh. +2. Navighează la panoul de Decriptare. +3. Trage și Plasează sau Selectează fișierele pe care dorești să le decriptezi. +4. Introdu sau încarcă cheia publică a expeditorului și cheia ta privată. +5. Descarcă fișierul decriptat. + +
+ +# [Limitări](#limitări) + +--- + +### Semnătura Fișierului + +Fișierele criptate cu hat.sh sunt identificabile prin semnătura fișierului folosită de aplicație pentru a verifica conținutul unui fișier, astfel de semnături sunt cunoscute și ca numere magice sau Magic Bytes. Acesti Bytes sunt autentificate și nu pot fi schimbate. + +### Browsere Safari și Mobile + +Browserele Safari și cele pentru telefoanele mobile sunt limitate la un singur fișier cu dimensiunea maximă de 1GB din cauza unor probleme legate de service-workers. În plus, această limitare se aplică și atunci când aplicația nu reușește să înregistreze service-worker-ul (de exemplu, FireFox Private Browsing). + +
+ +# [Cele mai bune practici](#cele-mai-bune-practici) + +--- + +### Alegerea Parolelor + +Majoritatea indivizilor se confruntă cu dificultăți în a crea și a memora parole, rezultând în parole slabe și reutilizarea parolelor. Criptarea bazată pe parolă este considerabil mai puțin sigură din cauza acestor practici necorespunzătoare. De aceea este recomandat să folosești generatorul de parole încorporat și să folosești un manager de parole precum [Bitwarden], unde poți stoca parola sigură. + +Dacă dorești să alegi o parolă pe care să o poți memora, ar trebui să tastezi o frază din 8 cuvinte sau mai mult. + +
+ +### Folosirea criptării cu chei publice în loc de parolă + +Dacă criptezi un fișier pe care intenționezi să îl partajezi cu altcineva, atunci ar trebui să îl criptezi cu cheia publică a destinatarului și cheia ta privată. + +
+ +### Partajarea Fișierelor Criptate + +Dacă intenționezi să trimiți cuiva un fișier criptat, se recomandă să folosești cheia ta privată și cheia publică a destinatarului pentru a cripta fișierul. + +Fișierul poate fi partajat în orice aplicație de partajare a fișierelor sigură. + +
+ +### Partajarea cheii publice + +Cheile publice pot fi partajate, ele pot fi trimise ca fișier `.public` sau ca text. + +> Nu împărtăși niciodată cheia ta privată cu nimeni! Doar cheile publice ar trebui schimbate. + +
+ +### Stocarea Cheilor Publice și Private + +Asigură-te că stochezi cheile tale de criptare într-un loc sigur și fă un backup pe un mediu de stocare extern. + +Stocarea cheii private în cloud nu este recomandată! + +
+ +### Partajarea Parolelor de Decriptare + +Partajarea parolei de decriptare poate fi făcută folosind o aplicație de mesagerie criptată end-to-end sigură. Se recomandă utilizarea unei funcții de _Mesaje care dispar_ și ștergerea parolei după ce destinatarul a decriptat fișierul + +. + +> Nu alege niciodată aceeași parolă pentru fișiere diferite. + +
+ +# [Întrebări frecvente](#întrebări-frecvente) + +--- + +### Aplicația înregistrează sau stochează datele mele? + +Nu, hat.sh nu stochează niciodată datele tale. Rulează doar local în browserul tău. + +
+ +### Hat.sh este gratuit? + +Da, Hat.sh este gratuit și va fi întotdeauna. Cu toate acestea, te rugăm să iei în considerare [donarea](https://github.com/sh-dv/hat.sh#donations) pentru a sprijini proiectul. + +
+ +### Ce tipuri de fișiere sunt acceptate? Există o limită de dimensiune a fișierelor? + +Hat.sh acceptă toate tipurile de fișiere. Nu există o limită de dimensiune a fișierelor, ceea ce înseamnă că fișiere de orice dimensiune pot fi criptate. + +Browserul Safari și browserele mobile/smartphone sunt limitate la 1GB. + +
+ +### Am uitat parola, pot totuși să decriptez fișierele mele? + +Nu, nu știm parola ta. Asigură-te întotdeauna că îți stochezi parolele într-un manager de parole. + +
+ +### De ce văd un mesaj care spune "Ai o experiență limitată (fișier unic, 1GB)"? + +Înseamnă că browserul tău nu suportă server-worker fetch api. Prin urmare, ești limitat la fișiere de dimensiuni mici. vezi [Limitări](#limitări) pentru mai multe informații. + +
+ +### Este sigur să îmi partajez cheia publică? + +Da. Cheile publice pot fi partajate, ele pot fi trimise ca fișier `.public` sau ca text. + +Dar asigură-te că nu împărtășești niciodată cheia ta privată cu nimeni! + +
+ +### De ce aplicația cere cheia mea privată în modul de criptare cu cheie publică? + +Hat.sh folosește criptare autentificată. Expeditorul trebuie să furnizeze cheia sa privată, o nouă cheie partajată va fi calculată din ambele chei pentru a cripta fișierul. Destinatarul trebuie să furnizeze cheia sa privată atunci când decriptează. În acest fel, se poate verifica că fișierul criptat nu a fost modificat și a fost trimis de la expeditorul real. + +
+ +### Mi-am pierdut cheia privată, este posibil să o recuperez? + +Nu. Cheile private pierdute nu pot fi recuperate. + +De asemenea, dacă simți că cheia ta privată a fost compromisă (de exemplu, împărtășită accidental / computerul a fost hack-uit), atunci trebuie să decriptezi toate fișierele care au fost criptate cu acea cheie, să generezi o nouă pereche de chei și să recriptezi fișierele. + +
+ +### Cum generează o pereche de chei (Publică și Privată)? + +Poți genera chei vizitând [pagina de generare a cheilor](https://hat.sh/generate-keys), asigură-te că [stochezi cheile în siguranță](#cele-mai-bune-practici). + +
+ +### Aplicația măsoară puterea parolei? + +Folosim implementarea JS [zxcvbn](https://github.com/dropbox/zxcvbn) pentru a verifica entropia parolei introduse, această entropie va fi convertită într-un scor care va fi afișat pe ecran. + +
+ +### Aplicația se conectează la internet? + +Odată ce vizitezi site-ul și pagina se încarcă, rulează doar offline. + +
+ +### Cum pot să contribui? + +Hat.sh este o aplicație open-source. Poți ajuta la îmbunătățirea ei făcând commit-uri pe GitHub. Proiectul este întreținut în timpul meu liber. [Donațiile](https://github.com/sh-dv/hat.sh#donations) de orice dimensiune sunt apreciate. + +
+ +### Cum raportez bug-uri? + +Te rog raportează bug-uri prin [Github] deschizând un issue etichetat cu "bug". + +
+ +### Cum raportez o vulnerabilitate de securitate? + +Dacă identifici o problemă de securitate validă, te rog să scrii un email la hatsh-security@pm.me + +Nu există nicio recompensă disponibilă în acest moment, dar contul tău de github va fi creditat în secțiunea de recunoașteri din documentația aplicației. + +
+ +### De ce ar trebui să folosesc hat.sh? + +1. Aplicația folosește algoritmi criptografici moderni și siguri. +2. Este super rapidă și ușor de utilizat. +3. Rulează în browser, nu este nevoie să configurezi sau să instalezi nimic. +4. Este un software gratuit open-source și poate fi găzduit cu ușurință. + +
+ +### Când nu ar trebui să folosesc hat.sh? + +1. Dacă dorești să criptezi un disc (de exemplu, [VeraCrypt]). +2. Dacă dorești să accesezi frecvent fișierele criptate (de exemplu, [Cryptomator]). +3. Dacă dorești să criptezi și să semnezi fișiere în același instrument. (de exemplu, [Kryptor]). +4. Dacă preferi un instrument de linie de comandă (de exemplu, [Kryptor]). +5. Dacă dorești ceva care aderă la standardele industriei, folosește [GPG]. + +
+ +# [Detalii Tehnice](#detalii-tehnice) + +--- + +### Hashing-ul Parolei și Derivarea Cheilor + +Funcțiile de hashing ale parolelor derivă o cheie secretă de orice dimensiune dintr-o parolă și un salt. + +
+ +
+ +```javascript +let salt = sodium.randombytes_buf(sodium.crypto_pwhash_SALTBYTES); +let key = sodium.crypto_pwhash( + sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES, + password, + salt, + sodium.crypto_pwhash_OPSLIMIT_INTERACTIVE, + sodium.crypto_pwhash_MEMLIMIT_INTERACTIVE, + sodium.crypto_pwhash_ALG_ARGON2ID13 +); +``` + +
+ +Funcția `crypto_pwhash()` derivă o cheie lungă de 256 biți dintr-o parolă și un salt a cărui lungime fixă este de 128 biți, care ar trebui să fie impredictibil. + +`randombytes_buf()` este cea mai simplă modalitate de a umple cei 128 biți ai saltului. + +
+ +`OPSLIMIT` reprezintă o cantitate maximă de calcule de efectuat. + +`MEMLIMIT` este cantitatea maximă de RAM pe care funcția o va folosi, în octeți. + +
+ +`crypto_pwhash_OPSLIMIT_INTERACTIVE` și `crypto_pwhash_MEMLIMIT_INTERACTIVE` furnizează linia de bază pentru acești doi parametri. Acest lucru necesită în prezent 64 MiB de RAM dedicată. ceea ce este potrivit pentru operațiunile din browser. +
+`crypto_pwhash_ALG_ARGON2ID13` folosește algoritmul Argon2id versiunea 1.3. + +
+ +### Criptarea Fișierelor (stream) + +Pentru a folosi aplicația pentru a cripta un fișier, utilizatorul trebuie să furnizeze un fișier valid și o parolă. această parolă este hash-uită și o cheie sigură este derivată din ea cu Argon2id pentru a cripta fișierul. + +
+ +
+ +```javascript +let res = sodium.crypto_secretstream_xchacha20poly1305_init_push(key); +header = res.header; +state = res.state; + +let tag = last + ? sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL + : sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE; + +let encryptedChunk = sodium.crypto_secretstream_xchacha20poly1305_push( + state, + new Uint8Array(chunk), + null, + tag +); + +stream.enqueue(signature, salt, header, encryptedChunk); +``` + +
+ +Funcția `crypto_secretstream_xchacha20poly1305_init_push` creează un flux criptat unde inițializează un `state` folosind cheia și un vector de inițializare intern, generat automat. Apoi stochează antetul fluxului în ` + +header` care are o dimensiune de 192 biți. + +Aceasta este prima funcție de apelat pentru a crea un flux criptat. Cheia nu va mai fi necesară pentru operațiunile ulterioare. + +
+ +Un flux criptat începe cu un antet scurt, a cărui dimensiune este de 192 biți. Acest antet trebuie trimis/stocat înainte de secvența de mesaje criptate, deoarece este necesar pentru decriptarea fluxului. Conținutul antetului nu trebuie să fie secret deoarece decriptarea cu un antet diferit ar eșua. + +Un tag este atașat fiecărei mesaje în funcție de valoarea `last`, care indică dacă acesta este ultimul fragment al fișierului sau nu. Acest tag poate fi oricare dintre: + +1. `crypto_secretstream_xchacha20poly1305_TAG_MESSAGE`: Acesta nu adaugă nicio informație despre natura mesajului. +2. `crypto_secretstream_xchacha20poly1305_TAG_FINAL`: Acesta indică faptul că mesajul marchează sfârșitul fluxului și șterge cheia secretă utilizată pentru a cripta secvența anterioară. + +Funcția `crypto_secretstream_xchacha20poly1305_push()` criptează fragmentul de fișier `chunk` folosind `state` și `tag`, fără informații suplimentare (`null`). +
+ +XChaCha20 stream cipher și Poly1305 MAC authentication sunt folosite pentru criptare. + +Funcția `stream.enqueue()` adaugă semnătura hat.sh (magic bytes), salt și antet urmate de fragmentele criptate. + +### Decriptarea Fișierelor (stream) + +
+ +```javascript +let state = sodium.crypto_secretstream_xchacha20poly1305_init_pull(header, key); + +let result = sodium.crypto_secretstream_xchacha20poly1305_pull( + state, + new Uint8Array(chunk) +); + +if (result) { + let decryptedChunk = result.message; + stream.enqueue(decryptedChunk); + + if (!last) { + // continuă decriptarea + } +} +``` + +
+ +Funcția `crypto_secretstream_xchacha20poly1305_init_pull()` inițializează un state dat un `key` secret și un `header`. Cheia este derivată din parola furnizată în timpul decriptării și antetul decupat din fișier. Cheia nu va mai fi necesară pentru operațiunile ulterioare. + +
+ +Funcția `crypto_secretstream_xchacha20poly1305_pull()` verifică faptul că `chunk` conține un ciphertext valid și un tag de autentificare pentru `state` dat. + +Această funcție va rămâne într-un buclă, până când un mesaj cu tag-ul `crypto_secretstream_xchacha20poly1305_TAG_FINAL` este găsit. + +Dacă cheia de decriptare este incorectă, funcția returnează o eroare. + +Dacă ciphertext-ul sau tag-ul de autentificare par a fi invalide, returnează o eroare. + +
+ +### Generarea Parolelor Aleatorii + +
+ +```javascript +let password = sodium.to_base64( + sodium.randombytes_buf(16), + sodium.base64_variants.URLSAFE_NO_PADDING +); +return password; +``` + +
+ +Funcția `randombytes_buf()` umple 128 biți începând de la buf cu o secvență impredictibilă de octeți. + +Funcția `to_base64()` encodează buf ca un șir Base64 fără padding. + +
+ +### Generarea și Schimbul Cheilor + +
+ +```javascript +const keyPair = sodium.crypto_kx_keypair(); +let keys = { + publicKey: sodium.to_base64(keyPair.publicKey), + privateKey: sodium.to_base64(keyPair.privateKey), +}; +return keys; +``` +
+ +Funcția `crypto_kx_keypair()` generează aleatoriu o cheie secretă și o cheie publică corespunzătoare. Cheia publică este pusă în publicKey și cheia secretă în privateKey. ambele de 256 biți. + +
+ +
+ +```javascript +let key = sodium.crypto_kx_client_session_keys( + sodium.crypto_scalarmult_base(privateKey), + privateKey, + publicKey +); +``` +
+ +Folosind API-ul de schimb de chei, două părți pot calcula în siguranță un set de chei partajate folosind cheia publică a peer-ului și cheia lor secretă. + +Funcția `crypto_kx_client_session_keys()` calculează o pereche de chei partajate lungi de 256 biți folosind cheia publică a destinatarului și cheia privată a expeditorului. + +Funcția `crypto_scalarmult_base()` este folosită pentru a calcula cheia publică a expeditorului din cheia sa privată. + +
+ +### XChaCha20-Poly1305 + +XChaCha20 este o variantă a ChaCha20 cu un nonce extins, permițând nonce-urilor aleatorii să fie sigure. + +XChaCha20 nu necesită tabele de căutare și evită posibilitatea atacurilor de sincronizare. + +Intern, XChaCha20 funcționează ca un cifru de bloc utilizat în modul counter. Folosește funcția hash HChaCha20 pentru a deriva o subcheie și un subnonce din cheia originală și nonce-ul extins și un contor de blocuri dedicat de 64 de biți pentru a evita incrementarea nonce-ului după fiecare bloc. + +
+ +### V2 vs V1 + +- trecerea la xchacha20poly1305 pentru criptarea simetrică a fluxului și Argon2id pentru derivarea cheii bazate pe parolă. în loc de AES-256-GCM și PBKDF2. +- utilizarea bibliotecii libsodium pentru toată criptografia în locul WebCryptoApi. +- în această versiune, aplicația nu citește întregul fișier în memorie. în schimb, este împărțit în fragmente de 64MB care sunt procesate unul câte unul. +- deoarece nu folosim procesarea pe server, aplicația înregistrează un URL de descărcare fals (/file) care va fi gestionat de service-worker fetch api. +- dacă toate validările sunt trecute, un nou flux este inițializat. apoi, fragmentele de fișiere sunt transferate de la aplicația principală la + fișierul service-worker prin mesaje. +- fiecare fragment este criptat/decriptat pe cont propriu și adăugat la flux. +- după ce fiecare fragment este scris pe disc, acesta va fi imediat colectat de gunoi de către browser, acest lucru ducând la nu având niciodată mai mult de câteva fragmente în memorie în același timp. + +
+ +[//]: # "linkuri" +[xchacha20-poly1305]: https://libsodium.gitbook.io/doc/secret-key_cryptography/aead/chacha20-poly1305/xchacha20-poly1305_construction +[argon2id]: https://github.com/p-h-c/phc-winner-argon2 +[x25519]: https://cr.yp.to/ecdh.html +[opensource]: https://github.com/sh-dv/hat.sh +[bitwarden]: https://bitwarden.com/ +[extending the salsa20 nonce paper]: https://cr.yp.to/snuffle/xsalsa-20081128.pdf +[soon]: https://tools.ietf.org/html/draft-irtf-cfrg-xchacha +[github]: https://github.com/sh-dv/hat.sh +[veracrypt]: https://veracrypt.fr +[cryptomator]: https://cryptomator.org +[kryptor]: https://github.com/samuel-lucas6/Kryptor +[gpg]: https://gnupg.org +[docker hub]: https://hub.docker.com/r/shdv/hat.sh \ No newline at end of file diff --git a/locales/ro_RO/index.js b/locales/ro_RO/index.js new file mode 100644 index 00000000..9e780013 --- /dev/null +++ b/locales/ro_RO/index.js @@ -0,0 +1,183 @@ +const ro_RO = { + language_name: "Română", + + // Menu + sub_title: "Criptare de fișiere simplă, rapidă și sigură", + home: "Acasă", + about: "Despre", + + // About page menu + introduction: "Introducere", + features: "Caracteristici", + installation: "Instalare", + usage: "Utilizare", + limitations: "Limitări", + best_practices: "Cele mai bune practici", + faq: "Întrebări frecvente", + technical_details: "Detalii tehnice", + changelog: "Jurnal de schimbări", + donation_message: "Iubești hat.sh? Poți dona pentru a sprijini proiectul.", + + // Settings + settings: "Setări", + language: "Limbă", + change_language: "Schimbă limba afișată", + change_appearance: "Schimbă aspectul", + language_changed: "Limbă schimbată! - Este necesară reîncărcarea paginii pentru a avea efect.", + help_translate: "Nu găsești limba ta? Poți ajuta la traducerea acestei aplicații urmând ghidul de traducere de pe github.", + reload: "REÎNCARCĂ", + dark_mode: "Mod Întunecat", + close: "Închide", + reset: "Resetează", + guide: "Ghid", + multiple_tabs_alert: "Alertă ferestre multiple", + multiple_tabs_alert_notice_one: "Se pare că Hat.sh este deja deschis într-o altă fereastră/filă.", + multiple_tabs_alert_notice_two: "Te rugăm să eviți criptarea/decriptarea fișierelor în diferite file în același timp.", + understand: "ÎNȚELEG", + + // Common + file: "fișier", + files: "fișiere", + password: "Parolă", + public_key: "Cheie publică", + private_key: "Cheie privată", + drag_drop: "Trage și Plasează aici sau Alege un fișier", + drag_drop_files: "Trage și Plasează aici sau Alege mai multe fișiere", + browse_file: "Alege Fișier", + browse_files: "Alege Fișiere", + change_file: "Schimbă Fișier", + add_files: "Adaugă Fișiere", + next: "Mai departe", + back: "Înapoi", + error: "Eroare", + required: "Necesar", + success: "Succes", + show_password: "Afișează Parola", + copy_password: "Copiază Parola", + password_copied: "Parola a fost copiată!", + show_private_key: "Afișează Cheia Privată", + load_public_key: "Încarcă Cheia Publică", + load_private_key: "Încarcă Cheia Privată", + short_password: "Te rugăm să introduci o parolă de minim 12 caractere. Sau generează una nouă.", + wrong_public_key: "Cheie Publică Greșită", + wrong_private_key: "Cheie Privată Greșită", + invalid_keys_input: "Cheile introduse sunt invalide.", + invalid_key_pair: "Această pereche de chei este invalidă! Te rugăm să selectezi chei pentru diferite părți.", + ready_to_download: "a fost încărcat cu succes și este gata de descărcare!", + files_ready_to_download: "fișiere au fost încărcate cu succes și sunt gata de descărcare!", + downloading_file: "Se descarcă...", + checking_file: "Se verifică fișierul...", + page_close_alert: "Nu închide pagina în timp ce fișierele se descarcă!", + offline_note: "Fișierele nu sunt încărcate pe un server, totul se face offline în browserul tău.", + + // Password Strength Check + very_weak: "Foarte Slabă (ușor de ghicit)", + weak: "Slabă", + moderate: "Moderată", + good: "Bună", + strong: "Puternică", + crackTimeEstimation: "estimare timp de spargere:", + less_second: "mai puțin de o secundă", + seconds: "secunde", + minutes: "minute", + hours: "ore", + days: "zile", + months: "luni", + years: "ani", + centuries: "secole", + + // Encryption + encryption: "Criptare", + drop_file_enc: "Trage fișiere aici pentru a cripta", + choose_files_enc: "Alege fișiere pentru a cripta", + enter_password_enc: "Introdu o parolă", + enter_keys_enc: "Introdu cheia publică a destinatarului și cheia ta privată", + password_strength: "Siguranța parolei", + choose_strong_password: "Alege o parolă puternică", + generate_password: "Generează Parolă", + recipient_public_key: "Cheia Publică a Destinatarului", + enter_recipient_public_key: "Introdu cheia publică a destinatarului", + your_private_key_enc: "Cheia Ta Privată", + enter_private_key_enc: "Introdu cheia ta privată", + encrypted_files: "Fișiere Criptate", + download_encrypted_files: "Descarcă fișierele criptate", + success_downloaded_files_enc: "Ai descărcat cu succes fișierele criptate!", + encrypt_more_files: "Criptează Mai Multe Fișiere", + create_shareable_link: "Creează link de partajare", + create_shareable_link_tooltip: "Creează un link care conține cheia ta publică", + create_shareable_link_note: "Acest link a fost generat offline.", + create_shareable_link_copied: "Linkul de partajare a fost copiat!", + copy_link: "Copiază linkul", + after_enc_note_one: "Trebuie să partajezi acest fișier împreună cu cheia ta publică pentru ca destinatarul să-l poată decripta.", + after_enc_note_two: "Poți crea un link care conține cheia ta publică astfel încât să nu fie nevoie să trimiți cheia ta publică și să te îngrijorezi că destinatarul o introduce corect.", + testing_password: "Testare Parolă...", + testing_keys: "Testare Chei...", + + // Decryption + decryption: "Decriptare", + drop_file_dec: "Trage fișiere pentru a decripta", + choose_files_dec: "Alege fișiere pentru a decripta", + sender_key_loaded: "Cheia publică a expeditorului este încărcată, te rugăm să selectezi fișierul criptat.", + recipient_key_loaded: "Cheia publică a destinatarului este încărcată, te rugăm să selectezi un fișier pentru a cripta.", + file_not_encrypted_corrupted: "Acest fișier nu a fost criptat folosind hat.sh sau fișierul poate fi corupt!", + old_version: "Acest fișier a fost criptat folosind o versiune mai veche de hat.sh, poți decripta acest fișier vizitând aplicația v1.", + file_mixup: "Fișierele selectate pentru decriptare trebuie să fie criptate folosind aceeași metodă, fie prin parolă, fie prin cheie publică. Alege fișiere care se potrivesc.", + enter_password_dec: "Introdu parola de decriptare", + enter_keys_dec: "Introdu cheia publică a expeditorului și cheia ta privată", + wrong_password: "Parolă Greșită", + file_has_wrong_password: "are o parolă greșită, testarea parolei s-a oprit, asigură-te că toate fișierele au aceeași parolă corectă de decriptare.", + file_has_wrong_keys: "are chei greșite, testarea cheilor s-a oprit, asigură-te că toate fișierele au aceleași chei corecte de decriptare.", + sender_public_key: "Cheia Publică a Expeditorului", + enter_sender_public_key: "Introdu cheia publică a expeditorului", + your_private_key_dec: "Cheia Ta Privată", + enter_private_key_dec: "Introdu cheia ta privată", + decrypted_files: "Fișiere Decriptate", + download_decrypted_files: "Descarcă fișierele decriptate", + success_downloaded_files_dec: "Ai descărcat cu succes fișierele decriptate!", + decrypt_other_files: "Decriptează Alte Fișiere", + + // Limited + choose_file_enc: "Alege un fișier pentru a cripta", + choose_file_dec: "Alege un fișier pentru a decripta", + encrypted_file: "Fișier Criptat", + decrypted_file: "Fișier De criptat", + download_encrypted_file: "Descarcă fișierul criptat", + download_decrypted_file: "Descarcă fișierul decriptat", + success_downloaded_file_enc: "Ai descărcat cu succes fișierul criptat!", + success_downloaded_file_dec: "Ai descărcat cu succes fișierul decriptat!", + encrypt_another_file: "Criptează Alt Fișier", + decrypt_another_file: "Decriptează Alt Fișier", + limited_safari: "Browserele Safari au o experiență limitată (fișier unic, 1GB)", + limited_mobile: "Browserele mobile au o experiență limitată (fișier unic, 1GB)", + limited_private: "Ai o experiență limitată (fișier unic, 1GB) din cauza navigării private.", + file_too_big: "Fișierul este prea mare!", + choose_file_1gb: "Alege un fișier de până la 1GB.", + encrypt_file: "Criptează fișier", + encrypting_file: "Criptare...", + decrypting_file: "Decriptare...", + page_close_alert_enc: "Nu închide pagina în timp ce fișierul este criptat!", + success_encrypted: "Fișierul a fost criptat cu succes!", + page_close_alert_dec: "Nu închide pagina în timp ce fișierul este decriptat!", + success_decrypted: "Fișierul a fost decriptat cu succes!", + download_file: "Descarcă Fișier", + + // Keypair generation panel + generate_now_button: "Generează acum", + generate_key_pair_button: "Generează Pereche de Chei", + generate_another_key_pair_button: "Generează Altă Pereche", + key_pair_question: "Nu ai chei publice/private?", + key_pair_generation_title: "Generare pereche chei publice/private:", + download_public_key: "Descarcă Cheia Publică", + download_private_key: "Descarcă Cheia Privată", + generate_public_key: "Generează cheie publică", + generate_private_key: "Generează cheie privată", + why_need_private_key: "De ce am nevoie de cheia mea privată?", + private_key_notice: "Nu împărtăși niciodată cheia ta privată cu nimeni! Doar cheile publice ar trebui să fie schimbate.", + generate_qr_code: "Generează cod QR", + qr_code_note_one: "Acest cod QR conține cheia ta publică. După scanare, dispozitivul va redirecționa către aplicație și va completa automat cheia publică.", + qr_code_note_two: "Poți împărtăși acest cod QR sau link cu alții, în loc să fie necesar ca aceștia să introducă manual cheia ta publică atunci când criptează fișiere.", + qr_code_note_three: "Acest cod QR a fost generat offline.", + +}; + +export default ro_RO; \ No newline at end of file