본문 바로가기

728x90

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

(13)
[파일]ROT13, 10대의 암호 ROT13(로테이션 13)은 텍스트 암호화/복호화를 이해하기 위한 간단 암호 기술이다. ROT13은 알파벳을 13자만큼 회전시켜서 텍스트를 변환한다. 예를 들어, "A"를 "N"으로, "B"를 "O"로, "C"를 "P"로 변환한다. 이 기술은 주로 중고장터와 같은 온라인 포럼에서 필요없는 관심을 피하기 위해 사용되기도하고 간단한 메시지를 감추기 위한 용도로 사용된다. ROT13은 단순한 문자 치환 방식이며, 원본 메시지를 손상시키지 않고 쉽게 원래의 메시지로 복원할 수 있다. 예를 들어, "HELLO"를 ROT13으로 암호화하면 "URYYB"가 된다. 반대로 "URYYB"를 ROT13으로 복호화하면 다시 "HELLO"가 된다. 아래 샘플 코드는 C#으로 작성되었다. using System; class P..
폴리비오스(Πολύβιος) 암호, 12513414113422 역사서를 저술한 폴리비오스(Πολύβιος)가 개발한 암호로 오래된 고전암호에 속한다. 고전암호라고해서 암호화 성능이 결코 떨어지지 않는다. 알파벳은 가로 5, 세로 5개의 2차원 행렬로 표현된다. 위 테이블에서 평문이 'RUSSIA'라고 한다면 42 45 43 43 24 11이 된다. ★ 암호테이블의 순서를 섞은 후 암기하도록 하면 암기한 사람만이 그 정답을 알 수밖에 없다. 한글로 2차원 행렬로 표현될 수 있다. 평문을 '일본'이라고 한다면 23 54 14 21 44 12가 된다. C#을 사용하여 폴리비오스 암호를 구현하려면 1) 암호화할 문자열과 폴리비오스 사각형을 만든다. 2) 폴리비오스 사각형에 문자열을 채운다. 3) 특정 규칙에 따라 암호문을 생성한다. using System; namespac..
시저 암호, Vdpvxqj라고 쓰고 Samsung이라고 읽음. 영어단어 시저(Caesar)는 독일에서는 카이저(kaiser), 러시아에서는 '차르(czar)'라고 하며 뜻은 '황제'다. 시저 암호는 로마 시대의 황제 시저가 사용한 것으로 알려져서 이 같은 이름이 붙여졌다. 시저 암호는 가장 간단한 치환 암호 방법이다. 시저 암호의 작동 방식은 주어진 암호화할 텍스트(평문)에서 각 문자를 알파벳에서 일정한 거리만큼 앞이나 뒤로 이동시켜 암호화한다. 이 거리를 "시프트 값"이라고 한다. 예를 들어, 시프트 값이 3이라면 'A'는 'D'로, 'B'는 'E'로 바뀐다. 암호화에 사용한 시프트 값을 알고 있으면 쉽게 암호화된 메시지를 해독할 수 있다. using System; class Program { static string CaesarCipher(string text,..
bit shift 암호, 75, 79, 82, 69, 65 2진수 비트를 이용한 암호화 방법은 전문적인 방법은 아니다. 암호화의 개념을 이해하고 디지털을 이용해 흥미를 갖는 용도 정도로만 사용하길 바란다. 비트 시프트(bit shift) 연산은 16진수를 2진수로 표현하며 지정된 비트만큼 좌측 또는 우측으로 비트를 옮기고 빈 자리에 0 또는 1을 채우는 방식으로 만든다. 비트 시프트 연산에는 두 가지 유형이 있습니다: 왼쪽 시프트(Left Shift)와 오른쪽 시프트(Right Shift)다. 왼쪽 시프트 (Left Shift): 왼쪽 시프트는 이진수를 왼쪽으로 이동시키는 연산 방식이다. 이동하는 만큼 값이 2의 거듭제곱 배가 된다. 예를 들어, 1을 2번 왼쪽으로 시프트하면 4가 된다. 0001(0x01) ▶ 0100(0x04) 오른쪽 시프트 (Right Sh..
XOR 암호, aeae?yAAI C# 코드로 구현한 비트 연산을 이용한 간단한 암호화 예제다. 예제에서는 XOR 연산을 사용하여 데이터를 암호화하고 복호화하는 방식을 사용한다. 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)(i..

728x90