Witam wszystkich,
jestem kompletnym laikiem w programowaniu (ok napisałem samodzielnie w C# program szyfrujący / deszyfrujący szyferm Cezara o dowolnie wybranym przesunięciu) a teraz męczę sę z szyfrem Vigenere.
Udało mi się stworzyć kod dzięki któremy szyfr działa ale wszystkie litery są zamieniana na UPERCASE (tekst jawny i hasło). Tak wiem w kodzie użyłem Char.ToUpper ale jak się tego pozbędę to szyfruje ale błędnie odszyfrowuje. Ponadto nie szyfruje cyfr.
Zatem prośba o wskazówki co powinienem poprawić aby programik szyfrował / deszyfrował małe i wielkie litery oraz liczby.
Z góry dziękuję za wskazówki
Skrawek mojego kodu:
private void szyfruj_Click(object sender, EventArgs e)
{
s = new StringBuilder(jawny.Text);
key = klucz.Text;
for (int i = 0; i < s.Length; i++) s[i] = Char.ToUpper(s[i]);
key = key.ToUpper();
int j = 0;
for (int i = 0; i < s.Length; i++)
{
if (Char.IsLetter(s[i]))
{
s[i] = (char)(s[i] + key[j] - 'A');
if (s[i] > 'Z') s[i] = (char)(s[i] - 'Z' + 'A' - 1);
}
j = j + 1 == key.Length ? 0 : j + 1;
}
zaszyfrowany.Text = s.ToString();
}