DevLab

Kvadrat Şifrələmə

Orta
stringmathmatrixcryptography
3000 ms
256 MB

Məxfi mesajlar yaratmaq üçün istifadə edilən klassik "Kvadrat Şifrələmə" (Square Code) metodunu tətbiq edən proqram yazın.

Şifrələmə prosesi aşağıdakı addımlardan ibarətdir:

  1. Normallaşdırma (Normalization): İngilis dilində verilmiş mətndəki bütün boşluqlar və durğu işarələri silinir, bütün hərflər isə kiçik registrə (lowercase) keçirilir.

  2. Ölçülərin tapılması: Normallaşdırılmış mətn xəyali bir düzbucaqlı (və ya kvadrat) matrisə yerləşdirilməlidir. Əgər mətnin uzunluğu L-dirsə, matrisin sətir (r) və sütun (c) sayı elə tapılmalıdır ki:

    • r x c >= L

    • c >= r

    • c - r <= 1

  3. Matrisin qurulması: Mətn bu r x c ölçülü matrisə sətirlər üzrə (soldan sağa) yazılır. Əgər mətn matrisi tam doldurmursa, boş qalan xanalara boşluq simvolu ( ) əlavə edilir.

  4. Şifrələmə: Şifrələnmiş mesaj matrisi sütunlar üzrə yuxarıdan aşağıya oxumaqla əldə edilir.

Nəticədə alınan şifrələnmiş mətn, aralarında bir boşluq olmaqla c ədəd blokdan (hər biri r uzunluğunda) ibarət olmalıdır. (Əgər matrisin sonunda boş xanalar qalıbsa, müvafiq sütunların sonundakı hərflər boşluq simvolu olacaq).

Giriş verilənləri:

Tək bir sətirdə şifrələnməli olan orijinal ingiliscə mətn (S) verilir. Mətn yalnız ASCII simvollarından ibarətdir.

Çıxış verilənləri:

Yuxarıdakı qaydalara əsasən şifrələnmış mətni aralarında boşluq olan bloklar şəklində çap edin.

1Nümunə 1:
Giriş:
If man was meant to stay on the ground, god would have given us roots.
Çıxış:
imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau
2Nümunə 2:
Giriş:
... --- ...
Çıxış:

Məhdudiyyətlər

  • 1 ≤ S ≤ 104

REDAKTOR
Giriş edin
Giriş:
If man was meant to stay on the ground, god would have given us roots.
Çıxış:
imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau