<?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=3101_-_XORCrypt</id>
	<title>3101 - XORCrypt - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3101_-_XORCrypt"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3101_-_XORCrypt&amp;action=history"/>
	<updated>2026-05-01T06:34:41Z</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=3101_-_XORCrypt&amp;diff=8852&amp;oldid=prev</id>
		<title>Codrut Borcutean: Pagină nouă: == Cerinţa == Se citește un text de maxim &#039;&#039;&#039;256&#039;&#039;&#039; caractere și o cheie de număr egal de caractere cu textul citit. După aplicarea &#039;&#039;&#039;Encripției XOR&#039;&#039;&#039;, caracterele rezultate se vor afișa în &#039;&#039;&#039;format binar&#039;&#039;&#039; deoarece în majoritatea cazurilor se obțin caractere neprintabile.  &#039;&#039;&#039;Encripția XOR&#039;&#039;&#039; presupune aplicarea operatorului pe biți &#039;&#039;&#039;XOR&#039;&#039;&#039; între text și cheie, între fiecare caracter din text și caracterul din cheie de pe aceeași poziție cu cel din te...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3101_-_XORCrypt&amp;diff=8852&amp;oldid=prev"/>
		<updated>2024-01-03T14:54:26Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Se citește un text de maxim &amp;#039;&amp;#039;&amp;#039;256&amp;#039;&amp;#039;&amp;#039; caractere și o cheie de număr egal de caractere cu textul citit. După aplicarea &amp;#039;&amp;#039;&amp;#039;Encripției XOR&amp;#039;&amp;#039;&amp;#039;, caracterele rezultate se vor afișa în &amp;#039;&amp;#039;&amp;#039;format binar&amp;#039;&amp;#039;&amp;#039; deoarece în majoritatea cazurilor se obțin caractere neprintabile.  &amp;#039;&amp;#039;&amp;#039;Encripția XOR&amp;#039;&amp;#039;&amp;#039; presupune aplicarea operatorului pe biți &amp;#039;&amp;#039;&amp;#039;XOR&amp;#039;&amp;#039;&amp;#039; între text și cheie, între fiecare caracter din text și caracterul din cheie de pe aceeași poziție cu cel din te...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se citește un text de maxim &amp;#039;&amp;#039;&amp;#039;256&amp;#039;&amp;#039;&amp;#039; caractere și o cheie de număr egal de caractere cu textul citit. După aplicarea &amp;#039;&amp;#039;&amp;#039;Encripției XOR&amp;#039;&amp;#039;&amp;#039;, caracterele rezultate se vor afișa în &amp;#039;&amp;#039;&amp;#039;format binar&amp;#039;&amp;#039;&amp;#039; deoarece în majoritatea cazurilor se obțin caractere neprintabile.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Encripția XOR&amp;#039;&amp;#039;&amp;#039; presupune aplicarea operatorului pe biți &amp;#039;&amp;#039;&amp;#039;XOR&amp;#039;&amp;#039;&amp;#039; între text și cheie, între fiecare caracter din text și caracterul din cheie de pe aceeași poziție cu cel din text: &amp;#039;&amp;#039;&amp;#039;text[i] XOR cheie[i]&amp;#039;&amp;#039;&amp;#039;. Pentru decriptare, operatorul se aplică între cheie și textul criptat.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
 Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;xorcryptin.txt&amp;#039;&amp;#039;&amp;#039; conține:&lt;br /&gt;
   1. Pe prima linie un text format din maxim &amp;#039;&amp;#039;&amp;#039;256&amp;#039;&amp;#039;&amp;#039; caractere.&lt;br /&gt;
   2.Pe a doua linie cheia, de lungime egală cu textul.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;xorcryptout.txt&amp;#039;&amp;#039;&amp;#039; va conține o singură linie, având caracterele în &amp;#039;&amp;#039;&amp;#039;format binar&amp;#039;&amp;#039;&amp;#039; separate prin spațiu.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* Se va folosi alfabetul englez.&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; xorcryptin.txt&lt;br /&gt;
 xor&lt;br /&gt;
 key&lt;br /&gt;
; xorcryptout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 00010011 00001010 00001011&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; xorcryptin.txt&lt;br /&gt;
 xor10&lt;br /&gt;
 key&lt;br /&gt;
; xorcryptout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;x^k -&amp;gt; 00010011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;o^e -&amp;gt; 00001010&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;r^y -&amp;gt; 00001011&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def xor_encrypt(text, key):&lt;br /&gt;
    # Aplică encripția XOR pe text cu cheia dată&lt;br /&gt;
    return &amp;#039; &amp;#039;.join([format(ord(a) ^ ord(b), &amp;#039;08b&amp;#039;) for a, b in zip(text, key)])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;#039;xorcryptin.txt&amp;#039;, &amp;#039;r&amp;#039;) as fin, open(&amp;#039;xorcryptout.txt&amp;#039;, &amp;#039;w&amp;#039;) as fout:&lt;br /&gt;
        text = fin.readline().strip()&lt;br /&gt;
        key = fin.readline().strip()&lt;br /&gt;
&lt;br /&gt;
        # Verifică dacă textul și cheia respectă restricțiile&lt;br /&gt;
        if len(text) &amp;gt; 256 or len(key) != len(text) or not all(c.isalpha() or c.isspace() for c in text):&lt;br /&gt;
            fout.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            return&lt;br /&gt;
&lt;br /&gt;
        fout.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # Aplică encripția XOR pe text cu cheia dată și scrie rezultatul în fișierul de ieșire&lt;br /&gt;
        fout.write(xor_encrypt(text, key) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Codrut Borcutean</name></author>
	</entry>
</feed>