<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3808_-_ADFGVX</id>
	<title>3808 - ADFGVX - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3808_-_ADFGVX"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3808_-_ADFGVX&amp;action=history"/>
	<updated>2026-05-02T01:22:27Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3808_-_ADFGVX&amp;diff=8832&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: == ADFGVX == Cifrul ADFGVX este un cifru ce folosește o matrice &#039;&#039;&#039;6x6&#039;&#039;&#039; care conţine literele alfabetului englez si cifre. Cifrul functioneaza asa: se citeste matricea, un mesajul si o cheie. In matrice, linia &#039;&#039;&#039;1&#039;&#039;&#039; si coloana &#039;&#039;&#039;1&#039;&#039;&#039; au codul &#039;&#039;&#039;A&#039;&#039;&#039;, linia &#039;&#039;&#039;2&#039;&#039;&#039; si coloana &#039;&#039;&#039;2&#039;&#039;&#039; au codul &#039;&#039;&#039;D&#039;&#039;&#039;, linia &#039;&#039;&#039;3&#039;&#039;&#039; si coloana &#039;&#039;&#039;3&#039;&#039;&#039; au codul &#039;&#039;&#039;F&#039;&#039;&#039;, linia &#039;&#039;&#039;4&#039;&#039;&#039; si coloana &#039;&#039;&#039;4&#039;&#039;&#039; au codul &#039;&#039;&#039;G&#039;&#039;&#039;, linia &#039;&#039;&#039;5&#039;&#039;&#039; si coloana &#039;&#039;&#039;5&#039;&#039;&#039; au codul &#039;&#039;&#039;V&#039;&#039;&#039;, iar linia &#039;&#039;&#039;6&#039;&#039;&#039;...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3808_-_ADFGVX&amp;diff=8832&amp;oldid=prev"/>
		<updated>2024-01-03T12:15:15Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == ADFGVX == Cifrul ADFGVX este un cifru ce folosește o matrice &amp;#039;&amp;#039;&amp;#039;6x6&amp;#039;&amp;#039;&amp;#039; care conţine literele alfabetului englez si cifre. Cifrul functioneaza asa: se citeste matricea, un mesajul si o cheie. In matrice, linia &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; si coloana &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; au codul &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;, linia &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; si coloana &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; au codul &amp;#039;&amp;#039;&amp;#039;D&amp;#039;&amp;#039;&amp;#039;, linia &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; si coloana &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; au codul &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;, linia &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; si coloana &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; au codul &amp;#039;&amp;#039;&amp;#039;G&amp;#039;&amp;#039;&amp;#039;, linia &amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039; si coloana &amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039; au codul &amp;#039;&amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;#039;, iar linia &amp;#039;&amp;#039;&amp;#039;6&amp;#039;&amp;#039;&amp;#039;...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== ADFGVX ==&lt;br /&gt;
Cifrul ADFGVX este un cifru ce folosește o matrice &amp;#039;&amp;#039;&amp;#039;6x6&amp;#039;&amp;#039;&amp;#039; care conţine literele alfabetului englez si cifre. Cifrul functioneaza asa:&lt;br /&gt;
se citeste matricea, un mesajul si o cheie.&lt;br /&gt;
In matrice, linia &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; si coloana &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; au codul &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;, linia &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; si coloana &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; au codul &amp;#039;&amp;#039;&amp;#039;D&amp;#039;&amp;#039;&amp;#039;, linia &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; si coloana &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; au codul &amp;#039;&amp;#039;&amp;#039;F&amp;#039;&amp;#039;&amp;#039;, linia &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; si coloana &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039; au codul &amp;#039;&amp;#039;&amp;#039;G&amp;#039;&amp;#039;&amp;#039;, linia &amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039; si coloana &amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039; au codul &amp;#039;&amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;#039;, iar linia &amp;#039;&amp;#039;&amp;#039;6&amp;#039;&amp;#039;&amp;#039; si coloana &amp;#039;&amp;#039;&amp;#039;6&amp;#039;&amp;#039;&amp;#039; au codul &amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Fiecare litera din mesaj este inlocuita cu un codul liniei si coloanei pe care se afla in matrice.&lt;br /&gt;
literele codurilor obtinute sunt puse intr-o matrice care are atatea coloane cate caractere are cheia(ultima linie a noii matrici poate fi incompleta).&lt;br /&gt;
coloanele noii matrici au codul literei din cheie de pe pozitia egala cu numarul de ordine al coloanei.&lt;br /&gt;
coloanele sunt sortate in functie de ordinea alfabetica al literei pe care o au asociata.&lt;br /&gt;
In final se afiseaza matricea noua parcursa pe coloane (pentru a fi mai clar, literele se afiseaza fara spatii intre ele, iar cand se trece pe o noua coloana, se va pune un spatiu).&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Vi se ofera un numar &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; si matricea pentru criptare.Pentru &amp;#039;&amp;#039;&amp;#039;c=1&amp;#039;&amp;#039;&amp;#039;, vi se ofera un mesaj si o cheie si trebuie sa criptati mesajul. Pentru &amp;#039;&amp;#039;&amp;#039;c=2&amp;#039;&amp;#039;&amp;#039;, vi se ofera mesajul criptat si o cheie si trebuie sa decriptati mesajul.h1.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;adfgvxin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;, iar pe urmatoarele linii matricea, mesajul si cheia.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;adfgvxout.txt&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie mesajul criptat sau decriptat, in functie de &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ lungimea mesajului necriptat ≤ 1000000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1≤c≤2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* cheia va avea numai litere distincte h1.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; adfgvxin.txt&lt;br /&gt;
: 1&lt;br /&gt;
: NA1C3H&lt;br /&gt;
: 8TB2OM&lt;br /&gt;
: E5WRPD&lt;br /&gt;
: 4F6G7I&lt;br /&gt;
: 9J0KLQ&lt;br /&gt;
: SUVXYZ&lt;br /&gt;
: ATTACKAT1200AM PRIVACY&lt;br /&gt;
; adfgvx.out&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: DGDD DAGD DGAF ADDF DADV DVFA ADVX&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; adfgvxin.txt&lt;br /&gt;
: 2&lt;br /&gt;
: NA1C3H&lt;br /&gt;
: 8TB2OM&lt;br /&gt;
: E5WRPD&lt;br /&gt;
: 4F6G7I&lt;br /&gt;
: 9J0KLQ&lt;br /&gt;
: SUVXYZ&lt;br /&gt;
: DGDD DAGD DGAF ADDF DADV DVFA ADVX PRIVACY&lt;br /&gt;
; adfgvx.out&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: ATTACKAT1200AM&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
codul literelor va fi: AD,DD,DD,AD,AG,VG,AD,DD,AF,DG,VF,VF,AD,DX.&lt;br /&gt;
Matricea noua va arata astfel:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;P R I V A C Y&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
A D D D D D A&lt;br /&gt;
&lt;br /&gt;
D A G V G A D&lt;br /&gt;
&lt;br /&gt;
D D A F D G V&lt;br /&gt;
&lt;br /&gt;
F V F A D D X&lt;br /&gt;
&lt;br /&gt;
Dupa ce sortam coloanele, matricea va arata astfel:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A C I P R V Y&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
D D D A D D A&lt;br /&gt;
&lt;br /&gt;
G A G D A V D&lt;br /&gt;
&lt;br /&gt;
D G A D D F V&lt;br /&gt;
&lt;br /&gt;
D D F F V A X&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; adfgvxin.txt&lt;br /&gt;
: 2&lt;br /&gt;
: NA1C3H&lt;br /&gt;
: 8TB2OM&lt;br /&gt;
: E5WRPD&lt;br /&gt;
: 4F6G7I&lt;br /&gt;
: 9J0KLQ&lt;br /&gt;
: PRIVACY&lt;br /&gt;
: DGDD DAGD DGAF ADDF DADV DVFA ADVX&lt;br /&gt;
; adfgvx.out&lt;br /&gt;
: Datele introduse nu corespund restricțiilor impuse.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# 3808 - ADFGVX&lt;br /&gt;
def validare(matrice_validare, mesaj_validare):           # functia de validare a datelor de intrare&lt;br /&gt;
    if len(mesaj_validare) &amp;gt; 1000000:&lt;br /&gt;
        raise ValueError&lt;br /&gt;
&lt;br /&gt;
    for linie in matrice_validare:&lt;br /&gt;
        if len(linie) != 6:    # fiecare linie trebuie sa aiba 6 caractere&lt;br /&gt;
            raise ValueError&lt;br /&gt;
&lt;br /&gt;
    fisier_iesire.write(&amp;quot;Datele introduse corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def codificare(matrice_codificare, mesaj_codificare):                     # functia de rezolvare&lt;br /&gt;
    codificat = &amp;quot;&amp;quot;&lt;br /&gt;
    for litera in mesaj_codificare:&lt;br /&gt;
        for i in range(6):&lt;br /&gt;
            for j in range(6):&lt;br /&gt;
                if matrice_codificare[i][j] == litera:&lt;br /&gt;
                    codificat += &amp;quot;ADFGVX&amp;quot;[i] + &amp;quot;ADFGVX&amp;quot;[j]&lt;br /&gt;
    return codificat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;adfgvxin.txt&amp;quot;, &amp;quot;r&amp;quot;)         # declararea fisierelor&lt;br /&gt;
    fisier_iesire = open(&amp;quot;adfgvxout.txt&amp;quot;, &amp;quot;w&amp;quot;)       # fisierul out trebuie declarat cu optiunea &amp;quot;w&amp;quot; (write)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        cerinta = int(fisier_intrare.readline())&lt;br /&gt;
        matrice = [list(fisier_intrare.readline().strip()) for _ in range(6)]&lt;br /&gt;
        cheie = fisier_intrare.readline().strip()&lt;br /&gt;
        mesaj = fisier_intrare.readline().strip()&lt;br /&gt;
&lt;br /&gt;
        validare(matrice, mesaj)                 # apelul functiei de validare&lt;br /&gt;
        if cerinta == 1:&lt;br /&gt;
            fisier_iesire.write(codificare(matrice, mesaj))               # apelul functiei de rezolvare&lt;br /&gt;
&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        fisier_iesire.write(&amp;quot;Datele introduse nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
    except IndexError:&lt;br /&gt;
        fisier_iesire.write(&amp;quot;Datele introduse nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zmicala Narcis</name></author>
	</entry>
</feed>