Witam, jak sprawdzić na ile dany algorytm szyfrowania tekstu jest bezpieczny?
A co to znaczy, że algorytm szyfrowania jest "bezpieczny" i względem czego chciałbyś je podzielić?
Napisałem algorytm szyfrowania:
string szyfruj_hasło(size_t długość, string hasło)
{
long long int plus=0;
while(długość > hasło.size())
{
hasło+=hasło;
}
hasło+=hasło;
for(size_t i=0;i<hasło.size();i++)
{
plus+=hasło[i];
}
for(size_t i=0;i<hasło.size();i++)
{
if(i!=hasło.size()-1 && !hasło[i]+hasło[i]>0)
{
hasło[i]+=hasło[i+1];
}
else if(i!=hasło.size()-1 && !hasło[i]-hasło[i]>0)
{
hasło[i]-=hasło[i+1];
}
else
{
hasło[i]=+i;
}
}
for(size_t i=0;i<hasło.size();i+=2)
{
char znak=hasło[i];
hasło[i]=hasło[i+1];
hasło[i+1]=znak;
}
for(size_t i=0;i<hasło.size();i++)
{
hasło[i]+=plus;
}
return hasło;
}
string szyfruj(string tekst, string hasło)
{
if(tekst.size()%2==1)
{
tekst+=" ";
}
for(size_t i=0;i<tekst.size();i++)
{
tekst[i]=tekst[i]+hasło[i];
}
for(size_t i=0;i<tekst.size();i+=2)
{
char znak=tekst[i];
tekst[i]=tekst[i+1];
tekst[i+1]=znak;
}
return tekst;
}
I jestem cieka jak trudno jest go złamać, o ile jest to w ogóle możliwe(mam nadzieję).
Jeżeli istnieje sposób na jego deszyfrację, możliwe jest też jego złamanie.
Jeżeli nie istnieje sposób na jego deszyfrację, nie jest to kodowanie, a hashowanie, co już jest operacją jednostronną.
Ale co w wypadku podania klucza: programowanie_c++
Przy wiadomości: Tajna wiadomość
I zaszyfrowanej postaci: i[jiUkbVjc†WÔb
Na ile trudne jest deszyfrowanie tego nie znając klucza.
Tak wiem, polskie znaki, ale ja mam visuala i mi działa :)
Na ile trudne jest deszyfrowanie tego nie znając klucza.
Dunnoh.
Należałoby najprawdopodobniej wykonywać brute-force, więc trochę by to zajęło (ale sam algorytm wygląda na banalny, więc zgaduję, że mój telefon złamałby to najwyżej w godzinę).
Ale w gruncie rzeczy, praktycznie każdy algorytm szyfrowania wymaga wykonania brute-force, jeżeli nie znamy hasła, nic innowacyjnego nie stworzyłeś :P
ty sam nie masz pojęcia co napisałeś. Kod roi się od głupich błędów.
A twój szyfr jest banalnie prosty do złamania.
szyfruj_hasło
nie nic ci nie daje, takie zwielokrotnianie hasła do niczego nie prowadzi. Nie trzeba nawet tego łamać by złamać szyfruj
, który jest tak naprawdę szyfrem Vigenère'a znanym prawie od 500 lat (dodatkowo zmieniasz tylko kolejność liter parzystych i nieparzystych).
Wiem, że nie jest to jakiś najlepszy algorytm szyfrowania, ale ja się dopiero uczę (jestem w gimnazjum) więc to jest mój pierwszy algorytm szyfrowania. Chciałbym się dowiedzieć co poprawić aby ten algorytm był nie do złamania, o ile się tak da.
co poprawić aby ten algorytm był nie do złamania, o ile się tak da.
Nie da się.
Szyfrowanie jest dwustronne - cokolwiek zaszyfrujesz, może być odszyfrowane.
Hashowanie jest natomiast jednostronne - ale algorytmy hashowania opracowywane są czasami nawet i latami przez matematyków, nie liczyłbym więc że wymyślisz jakiś skuteczny...
adam_vip napisał(a):
Wiem, że nie jest to jakiś najlepszy algorytm szyfrowania, ale ja się dopiero uczę (jestem w gimnazjum) więc to jest mój pierwszy algorytm szyfrowania. Chciałbym się dowiedzieć co poprawić aby ten algorytm był nie do złamania, o ile się tak da.
Ty sobie chyba jaja robisz. Wiesz jaka zaawansowana matematyka siedzi za współczesnymi prostymi szyframi? To jest nie do przełknięcia dla licealisty, a co dopiero dla gimnazjalisty.
Nie to, że cię zniechęcam(y). Chcę cię jedynie uświadomić, że w twoja ambicja stworzenia szyfru nie do złamania jest obecnie marzeniem ściętej głowy.
Jeśli jesteś dostatecznie rozgarnięty, to sam będziesz w stanie złamać ten swój szyfr, bo do tego nie trzeba jakiejś specjalnej wiedzy.
Poćwicz trochę, próbuj sam łamać własne wynalazki, a potem gdy zdobędziesz trochę wiedzy, weź się za coś ambitniejszego. Kto wie, może za parę lat będziesz pierwszym hackerm RP :).
Żeby ci pokazać skalę problemu współczesnych szyfrów: jednym z kryteriów uznania szyfru za doby jest wymóg, by zmiana JEDNEGO BITU w wiadomości szyfrowanej, powodowała zmianę średnio połowy bitów szyfrogramu.
Nie muszę chyba tłumaczyć, że twój szyfr nie spełnia tego wymogu w najmniejszym stopniu.
Napiszcie mi jaki jest najlepszy (najtrudniejszy do złamania) algorytm szyfrowania za pomocą klucza symetrycznego
Szyfr z kluczem jednorazowym ang. one-time pad - najtrudniejszy do złamania i najprostszy, ale żeby był bezpieczny trzeba spełnić wiele warunków, które prawie całkowicie eliminują go z zastosowań na co dzień.