본문 바로가기

디지털포렌식(Digital forensic)/알파벳

XOR 암호, aeae?yAAI

반응형

C# 코드로 구현한 비트 연산을 이용한 간단한 암호화 예제다.

예제에서는 XOR 연산을 사용하여 데이터를 암호화하고 복호화하는 방식을 사용한다.

 

출처: freepik

XOR 연산은 배타적 논리합 연산을 말한다.

두 개의 입력이 주어졌을 때, 두 개의 입력 중 하나만이 참(True)일 때 결과가 참이 되며,

둘 다 참이거나 둘 다 거짓일 때는 결과가 거짓(False)이 된다.

XOR은 "Exclusive OR"의 약어로서, 배타적인 조건을 나타낸다.

 

XOR 연산의 진리표

입력 A 입력 B 결과
0 0 0
0 1 1
1 0 1
1 1 0

 

사용된 주요 값들은 평문은 panintext = "NANA Wine" 이고,

키값은 int key = 0xAA,

핵심 코드는 XOR를 수행하는

encryptedChars[i] = (char)(inputChars[i] ^ key) 코드는 

  1. inputChars[i]: inputChars 배열의 i번째 요소로부터 문자 값을 가져온다.
  2. key: XOR 연산을 수행할 때 사용할 키 값을 가져온다.
  3. (char): XOR 연산 결과를 문자로 형을 변환한다.
  4. ^: XOR 연산자를 사용하여 inputChars[i]와 key를 비트 단위로 XOR 연산한다.
  5. encryptedChars[i]: XOR 연산 결과를 encryptedChars 배열의 i번째 위치에 저장다.

 

using System;

class BitwiseEncryptionExample
{
    static void Main(string[] args)
    {
        string plaintext = "NANA Wine";
        int key = 0xAA; // 이 예제에서 사용할 키 값

        // 암호화
        string encrypted = Encrypt(plaintext, key);
        Console.WriteLine("Encrypted: " + encrypted);

        // 복호화
        string decrypted = Decrypt(encrypted, key);
        Console.WriteLine("Decrypted: " + decrypted);
    }

    static string Encrypt(string input, int key)
    {
        char[] inputChars = input.ToCharArray();
        char[] encryptedChars = new char[inputChars.Length];

        for (int i = 0; i < inputChars.Length; i++)
        {
            encryptedChars[i] = (char)(inputChars[i] ^ key);
        }

        return new string(encryptedChars);
    }

    static string Decrypt(string input, int key)
    {
        return Encrypt(input, key); // XOR 연산은 암호화와 복호화가 동일
    }
}

 

결과

 

 

 

 

 

 

 

 


æii?ayai?yaaa

누구의 이름일까?

728x90