RC4 알고리즘 암호화

2022. 7. 3. 15:37· SWING
728x90
#include <iostream>
#include <cstring>
#include <windows.h>
using namespace std;

typedef unsigned char byte;

int main()
{
	byte S[256]; //배열 S는 초기화 과정에서 0부터 255까지의 값을 담음
	byte K[256];  //배열 K는 자신의 길이와 modula 연산을 통해 S의 내용값을 뒤섞음
	byte key_Streambyte;
	//Key_Streambyte는 key값으로 섞인 배열 S에서 평문과 암호화할 바이트 하나 선택

	int i, j = 0, t;
	int counter = 0;

	char key[] = "Gidan";  //키 값과 바이트 단위로 암호화할 평문
	char plainText[] = "SWING";

	//초기화 과정: 256단계의 반복을 통해 S에 순열 대입
	for (i = 0;i < 256;i++) {
		S[i] = i;
		K[i] = key[i % strlen(key)];
	}
	//0에서 255까지의 값이 정렬된 S에 K와 swap()함수를 통해 셔플링
	for (i = 0;i < 256;i++) {
		j = (j + S[i] + K[i]) % 256;
		swap(S[i], S[j]);
	}
	i = j = 0;

	cout << "현재 키 값: " << key << endl;  //현재 키 값 출력

	//평문의 바이트 길이만큼 암호화가 반복적으로 이루어짐
	for (counter = 0;counter < strlen(plainText);counter++) {
		i = (i + 1) % 256;
		j = (j + S[i]) % 256;
		swap(S[i], S[j]);

		t = (S[i] + S[j]) % 256;
		key_Streambyte = S[t];

		plainText[counter] ^= S[key_Streambyte];  //암호화
		plainText[counter] ^= S[key_Streambyte];  //복호화

		cout << (counter + 1) << "번째 key_Streambyte: ";  //평문의 한 바이트마다
		cout << (unsigned int)key_Streambyte << endl;  //key_Streambyte의 값을 확인
	}
	cout << endl << "복호화 된 plainText: "
		<< plainText << endl;  //암호화할 때마다 매번 복호화해서 평문이 그대로 출력
	exit(0);
}

'SWING' 카테고리의 다른 글

WeChall Traning: LSB  (0) 2022.08.07
스테가노그래피 02  (0) 2022.08.05
스테가노그래피 01  (0) 2022.08.05
defcon-Multimedia-파일에서 이미지를 찾아라!  (0) 2022.08.04
'SWING' 카테고리의 다른 글
  • WeChall Traning: LSB
  • 스테가노그래피 02
  • 스테가노그래피 01
  • defcon-Multimedia-파일에서 이미지를 찾아라!
오호츠크해 기단
오호츠크해 기단
오호츠크해 기단
공기덩어리
오호츠크해 기단
전체
오늘
어제
  • 분류 전체보기 (223)
    • Linux (14)
    • Web (20)
    • Forensic (20)
    • Reversing (18)
    • System (28)
    • Fuzzing (4)
    • WHS 1st (12)
    • SWING (5)
    • CTF (37)
    • 활동들.. (24)
      • 개인정보보호 국민점검단 (1)
      • 스쿨혁명 1784 (1)
      • Incognito (10)
      • 코드클럽 (10)
      • 월드프렌즈코리아 ICT봉사단 (2)
    • Dreamhack (16)
      • Web Hacking (10)
      • Crypto (6)
    • 개발 (19)
      • C++ (12)
      • Git (3)
      • Figma (1)
      • Clone (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • github
  • readme
  • MD
  • 월클
  • 코드클럽
  • SW교육기부단
  • 마크다운 문법
  • 방
  • 깃허브
  • 마크다운

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
오호츠크해 기단
RC4 알고리즘 암호화
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.