From Wikipedia, the free encyclopedia
În criptografie, criptarea este procesul de mascare a informației pentru a o face ilizibilă fără cunoștințe speciale. În prezent, este utilizată în protejarea unei mari varietăți de sisteme, precum e-comerț, rețele de telefonie mobilă și ATM-urile băncilor.
Calitatea informațiilor sau a exprimării din acest articol sau secțiune trebuie îmbunătățită. Consultați manualul de stil și îndrumarul, apoi dați o mână de ajutor. Acest articol a fost etichetat în septembrie 2011 |
Criptarea poate fi folosită pentru a asigura discreția și/sau intimitatea, dar și alte tehnici sunt necesare pentru a face comunicațiile sigure. În mod particular verificarea integrității și autenticității unui mesaj, de exemplu un cod de autentificare a mesajelor (CAM) sau semnături digitale. Alt motiv este protecția împotriva analizei traficului.
Criptarea sau ascunderea codului de software este folosit în protecția copierii de software împotriva ingineriei inverse, analiza aplicațiilor neautorizată, crack-uri și pirateria software.
Criptarea este utilizată pentru a stoca informații importante în surse nesigure și a le transfera prin canale de comunicare neprotejate. Acest transfer de date reprezintă două procese reciproc inverse:
Criptarea a fost inițial utilizată numai pentru transferul de informații confidențiale. Cu toate acestea, ulterior informațiile au fost criptate în scopul stocării în surse nesigure. Se folosește acum criptarea informațiilor în scopul stocării, evitând astfel necesitatea stocării protejate fizic.
În prezent există o mulțime de metode de criptare. Majoritatea acestor metode sunt împărțite, în funcție de structura cheilor utilizate, de metodele simetrice și de metodele asimetrice. În plus, metodele de criptare pot avea rezistențe criptografice diferite și pot gestiona datele de intrare în diferite moduri - cipuri bloc și cipuri de flux. Prin toate aceste metode, crearea și analiza acestora este angajată în știința criptografiei.
Aceste metode rezolvă anumite sarcini și au atât avantaje, cât și dezavantaje. Alegerea specifică a metodei utilizate depinde de scopurile cu care informațiile sunt criptate.
În criptosistemele simetrice, aceeași cheie este folosită pentru criptare și decriptare. Prin urmare, numele este simetric. Algoritmul și cheia sunt selectate în prealabil și cunoscute de ambele părți. Menținerea unei chei în secret este o sarcină importantă pentru stabilirea și menținerea unui canal de comunicare securizat. În această privință există o problemă a transferului cheie inițial (sincronizarea cheii). În plus, există metode de atacuri cripte care permit într-un fel sau altul să decripteze informațiile fără a avea o cheie sau prin utilizarea intercepției sale în etapa de coordonare. În general, aceste momente reprezintă problema tăriei criptografice a unui algoritm specific de criptare și reprezintă un argument atunci când se alege un anumit algoritm.
Metodele simetrice și mai specific algoritmii de criptare alfabetică au fost printre primii algoritmi [1]. Mai târziu, a fost inventată criptarea asimetrică, în care cheile interlocutorilor sunt diferite [2].
Schema de implementare
Dezavantajele cripțiunii simetrice sunt problema transferului cheii către interlocutor și incapacitatea de a stabili autenticitatea sau autoritatea textului. Prin urmare, de exemplu în centrul tehnologiei semnăturii digitale sunt schemele asimetrice.
În sistemele cu cheie publică sunt utilizate două chei - deschise și închise, conectate într-un mod matematic unul cu celălalt. Cheia publică este transmisă printr-un canal deschis (adică, neprotejat, vizibil) și este folosit pentru a cripta mesajul și pentru a verifica EDS. O cheie secretă este utilizată pentru a decripta mesajul și a genera EDS.
Această schemă rezolvă problema circuitelor simetrice asociate transferului inițial al cheii către cealaltă parte. Dacă atacatorul interceptează cheia în scheme simetrice, poate atât să "asculte", cât și să corecteze informațiile transmise. În sistemele asimetrice, o cheie publică este transmisă celeilalte părți, ceea ce vă permite să criptați, dar nu să decriptați informațiile. Astfel se rezolvă problema sistemelor simetrice, legate de sincronizarea cheilor [2].
Primii cercetători care au inventat și descoperit conceptul de criptare open-source au fost Whitfield Diffie și Martin Hellman de la Universitatea Stanford și Ralph Merkle de la Universitatea Berkeley din California. În 1976, lucrarea lor "New Directions in Cryptography Modern" a deschis un nou domeniu în criptografie, acum cunoscut sub numele de criptografie cu chei publice.
Schema de implementare
Dacă este necesar să se stabilească un canal de comunicare în ambele direcții, primele două operațiuni trebuie făcute pe ambele părți, astfel încât toată lumea să știe cheile publice private și cheia publică a interlocutorului. Cheia privată a fiecărei părți nu este transmisă pe un canal neprotejat, rămânând astfel în secret.
După cum s-a spus anterior, atunci când criptează este foarte important să se conțină și să se distribuie corect cheile între interlocutori deoarece acesta este cel mai vulnerabil loc al oricărui sistem criptos. Dacă dvs. și interlocutorul dvs. faceți schimb de informații printr-un sistem de criptare ideal, există întotdeauna posibilitatea de a găsi un defect nu în sistemul utilizat, ci în cei care îl folosesc. Puteți să furați cheile de la o persoană de încredere sau să o mituiți și de multe ori este mult mai ieftină decât hacking cifrul. Prin urmare, procesul al cărui conținut este compilarea și distribuirea cheilor între utilizatori, joacă un rol crucial în criptografie ca bază pentru asigurarea confidențialității schimbului de informații.
Managementul cheie în criptosisteme este implementat în conformitate cu politica de securitate. Politica de securitate dictează amenințările pe care sistemul trebuie să le confrunte. Sistemul care controlează cheile este împărțit într-un sistem de generare a cheilor și un sistem de control cheie.
Este specificat un text care conține numai litere latine, spații și transferuri de linie.
Un cuvânt este o succesiune de litere latine consecutive, registrul nu contează.
În procesul de criptare, fiecărui cuvânt i se atribuie un identificator unic - un număr de la 1 la n, unde n este numărul de cuvinte diferite din acest text.
Este necesară criptarea textului și ieșirea acestuia sub forma unei secvențe numerice.
#include <iostream>
#include <vector>
#include <string>
#include <set>
using namespace std;
const int INF = INT_MAX / 2;
void func(string &s1) {
for (int i = 0; i < s1.length(); i++) {
s1[i] = tolower(s1[i]);
}
}
int main() {
set <pair <string, int>> ans;
string::size_type k = 0;
string s;
int cnt = 1;
while(getline(cin, s)) {
s+=" ";
k=s.find(" ");
while (k != string::npos) {
string s1 = s.substr(0,k);
func(s1);
s.erase(0, k + 1);
if (s1.length() == 0) {
k = s.find(" ");
continue;
}
bool f = false;
set <pair <string, int>> :: iterator it = ans.lower_bound(make_pair(s1, -INF));
if (it != ans.end() && (*it).first == s1) {
cout << (*it).second << ' ';
f = true;
}
if (!f) {
ans.insert(make_pair(s1, cnt));
cout << cnt << ' ';
cnt++;
}
k=s.find(" ");
}
}
return 0;
}
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.