IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

C# XOR (Jak to działa dla deweloperów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 23 kwietnia 2026

Podczas pracy z plikami PDF w C#, bezpieczeństwo i manipulacja danymi to ważne kwestie. Jedną z efektywnych technik do lekkiego szyfrowania i transformacji danych jest operacja bitowe XOR. Technika ta jest szeroko stosowana w operacjach logicznych, obfuskacji danych i znakowaniu wodnym.

IronPDF, potężna biblioteka C# do obsługi plików PDF, pozwala programistom zintegrować bitowe operatory logiczne w przepływy pracy z PDF. Wykorzystując operator logiczny XOR, możemy zastosować transformacje do teksu, obrazów i metadanych w plikach PDF.

W tym przewodniku zbadamy, jak działa operator XOR, jak wchodzi w interakcję z operandami boolowskimi i jak go stosować w przetwarzaniu PDF z IronPDF.

Understanding XOR in C#

Co to jest XOR?

XOR (znany również jako operator logiczny wykluczającego OR) jest reprezentowany w kodzie przez symbol ^ i jest operacją binarną, która wykonuje bitowe operacje XOR. Jak różni się od operatora logicznego OR? Chociaż te dwa operatory mają podobną nazwę, użycie słowa 'wyłączny' w nazwie operatora XOR je różni. Operator logiczny OR jest bardziej inkluzywnym operandem, ekwiwalentem operatora AND/OR, gdzie zwróci prawdę, jeśli jeden lub oba z dwóch operandów są prawdziwe.

Z kolei XOR działa inaczej. Ten operator bitowy ocenia wartości boolowskie i zwróci prawdę tylko wtedy, gdy dokładnie jeden z dwóch operandów jest prawdziwy. Jeżeli oba wybory dają tę samą wartość, zwraca fałsz.

W celu uzyskania bardziej uproszczonego przeglądu, spójrzmy na tabelę prawdy, która pokazuje, jak działa XOR:

in1in2out
101
011
110
000

Podczas gdy operator OR działa w ten sposób:

in1in2out
101
011
111
000

Na przykład:

// Example demonstrating bitwise XOR operation
byte a = 0b10101010; // 170 in decimal
byte b = 0b11001100; // 204 in decimal
byte result = (byte)(a ^ b); // XOR operation
Console.WriteLine(Convert.ToString(result, 2)); // Output: 01100110

W wyrażeniach boolowskich XOR może być stosowany do operandów boolowskich:

// Example demonstrating logical XOR operation with bools
bool a = true;
bool b = false;
bool result = a ^ b; // Logical XOR operator
Console.WriteLine(result); // Output: True

Tutaj wykonujemy operację bitową, aby porównać dwa operandy. Prawy operand różni się od lewego, co zapewnia, że wynik jest prawdziwy. Gdyby drugi operand był taki sam jak pierwszy, zobaczylibyśmy fałsz.

Priorytety operatorów i XOR

Operacja bitowe XOR ma niższy priorytet operatora niż operatory arytmetyczne, ale wyższy niż dopełnienie bitowe (~) i negacja logiczna (!).

Na przykład:

// Example demonstrating operator precedence
int x = 5 ^ 2 + 3; 
Console.WriteLine(x); // Output: 0

Operator Precedence in C#

    • (dodawanie) ma wyższy priorytet niż ^ (bitowe XOR).
  • Oznacza to, że wyrażenie jest oceniane jako:

    int x = 5 ^ (2 + 3); // Equivalent to 5 ^ 5
    • Teraz obliczamy bitowe XOR:

      5  = 00000101  
      5  = 00000101  
      -------------
      XOR = 00000000  (Decimal 0)
      Text
  • Ostateczny wynik: 0.

XOR dla bezpieczeństwa i przetwarzania PDF

Użycie XOR do podstawowego szyfrowania w PDF

Ponieważ XOR może kodować i dekodować dane za pomocą tej samej operacji, często jest używany do lekkiego szyfrowania. Chociaż nie jest to mocna metoda zabezpieczeń w porównaniu do szyfrowania AES, zapewnia szybki sposób obfuskacji treści PDF.

XOR do dynamicznego zmieniania widoczności obrazów

XOR może być używany do dynamicznego zmieniania widoczności obrazów znaków wodnych i stempelków. Na przykład znak wodny może być zakodowany przy użyciu XOR, co czyni go widocznym tylko po zastosowaniu znanego klucza. Ta sama metoda może być stosowana do tekstowych znaków wodnych i stempelków.

XOR w obfuskacji metadanych

Metadane PDF często zawierają wrażliwe szczegóły, takie jak autor dokumentu, data utworzenia i inne identyfikatory. XOR może być stosowany do pól metadanych, aby uczynić je nieczytelnymi bez dekodowania.

Implementing XOR with IronPDF in C#

Przetwarzanie tekstu w PDF oparte na XOR

Zastosowanie XOR do tekstu przed wprowadzeniem go do PDF może zapewnić podstawową formę obfuskacji. W poniższym przykładzie przyjrzymy się bliżej kodowi zaangażowanemu w ten proces.

Przykład: Kodowanie i dekodowanie tekstu z XOR w IronPDF

using IronPdf;
using System;
using System.Text;

class Program
{
    // Function to encrypt and decrypt text using XOR
    static string XorEncryptDecrypt(string text, char key)
    {
        StringBuilder output = new StringBuilder();
        foreach (char c in text)
        {
            output.Append((char)(c ^ key)); // XOR operation
        }
        return output.ToString();
    }

    static void Main()
    {
        var text = "Confidential Information";
        char key = 'X'; // Simple XOR key
        string encodedText = XorEncryptDecrypt(text, key); // Encrypt text
        var pdf = new PdfDocument(270, 270); // Create a new PDF document
        pdf.DrawText(encodedText, FontTypes.TimesNewRoman.Name, FontSize: 40, 
            PageIndex: 0, X: 150, Y: 300, Color.Black, Rotation: 0); // Draw the text
        pdf.SaveAs("XorEncoded.pdf"); // Save the PDF
        Console.WriteLine("PDF with XOR-encoded text created.");
    }
}

Tutaj funkcja XOR jest używana do obfuskacji tekstu przed wprowadzeniem go do PDF. Ta sama funkcja może go odszyfrować, stosując ponownie XOR z tym samym kluczem.

XOR do manipulacji obrazem PDF

XOR może być również stosowany do obrazów przed osadzeniem ich w PDF, zmieniając ich wartości pikseli, tak aby były widoczne tylko podczas dekodowania.

Przykład: Zastosowanie XOR na pikselach obrazu przed wprowadzeniem do PDF

using IronPdf;
using IronPdf.Editing;
using System;
using System.Drawing;

class Program
{
    // Function to XOR image pixels
    static Bitmap XorImage(Bitmap image, byte key)
    {
        for (int y = 0; y < image.Height; y++)
        {
            for (int x = 0; x < image.Width; x++)
            {
                // Apply XOR operation to each color channel except alpha
                Color pixel = image.GetPixel(x, y);
                Color newPixel = Color.FromArgb(pixel.A, pixel.R ^ key, pixel.G ^ key, pixel.B ^ key);
                image.SetPixel(x, y, newPixel); // Set the new pixel value
            }
        }
        return image;
    }

    static void Main()
    {
        var pdf = new PdfDocument(270, 270);
        Bitmap image = new Bitmap("example_image.png");
        Bitmap encodedImage = XorImage(image, 0x55);
        encodedImage.Save("XorImage.png");
        ImageStamper imageStamp = new ImageStamper("XorImage.png")
        {
            VerticalAlignment = VerticalAlignment.Middle,
        };
        pdf.SaveAs("XorImagePDF.pdf");
        Console.WriteLine("PDF with XOR-modified image created.");
    }
}

To podejście zmienia kolory pikseli za pomocą XOR, zapewniając, że obraz wydaje się zaszyfrowany, chyba że dekodowany za pomocą poprawnego klucza.

XOR do obsługi metadanych PDF

Metadane PDF często zawierają ważne informacje, które mogą wymagać obfuskacji. XOR może być stosowany do pól metadanych, aby uczynić je nieczytelnymi bez klucza deszyfrującego.

Przykład: Szyfrowanie pól metadanych PDF za pomocą XOR

using IronPdf;
using System;
using System.Text;

class Program
{
    // Function to encrypt and decrypt metadata using XOR
    static string XorEncryptDecrypt(string input, char key)
    {
        StringBuilder output = new StringBuilder();
        foreach (char c in input)
        {
            output.Append((char)(c ^ key)); // XOR operation
        }
        return output.ToString();
    }

    static void Main()
    {
        var pdf = new PdfDocument(270, 270);
        // Apply XOR to obfuscate metadata
        pdf.MetaData.Author = XorEncryptDecrypt("John Doe", 'K');
        pdf.MetaData.Title = XorEncryptDecrypt("Confidential Report", 'K');
        pdf.SaveAs("XorMetadata.pdf");
        Console.WriteLine("PDF with XOR-encoded metadata created.");
    }
}

Tutaj pola metadanych są szyfrowane przy użyciu XOR, uniemożliwiając łatwy dostęp do wrażliwych informacji.

Najlepsze praktyki i ograniczenia

Kiedy używać XOR w przetwarzaniu PDF

  • Lekka obfuskacja tekstu, obrazów i metadanych
  • Proste techniki znakowania wodnego
  • Podstawowe szyfrowanie, gdy nie jest wymagana wysoka ochrona

Kwestie bezpieczeństwa i alternatywy

  • XOR nie jest mocną metodą szyfrowania i nie powinien być używany do zabezpieczania wysoko poufnych informacji.
  • W celu silniejszego zabezpieczenia rozważ szyfrowanie AES lub funkcje ochrony hasłem PDF.

Konsekwencje wydajnościowe w dużych plikach PDF

  • Operacje XOR na dużych plikach PDF, zwłaszcza na obrazach, mogą wpłynąć na wydajność.
  • Rozważ optymalizację przez stosowanie XOR do wybranych elementów, a nie do całych plików PDF.

Wnioski

XOR to prosta, lecz skuteczna technika do bitowych operacji logicznych, znakowania wodnego i obsługi metadanych w plikach PDF. Stosując transformacje XOR do teksu, obrazów i metadanych, programiści mogą tworzyć pliki PDF z odwracalną obfuskacją. Jednakże, dla wyższych potrzeb bezpieczeństwa powinny być używane mocniejsze metody szyfrowania.

Zrozumiejąc, jak bitowe operatory logiczne, priorytet operatorów i wyrażenia logiczne działają w C#, programiści mogą efektywnie używać XOR z IronPDF w różnych praktycznych zastosowaniach. Nie masz jeszcze IronPDF? Wypróbuj bezpłatny okres próbny, aby sprawdzić, jak IronPDF może przenieść Twoje projekty PDF na wyższy poziom już dziś!

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta