• 전문가 요청 쿠폰 이벤트
도움이
Bronze개인인증
팔로워1 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 11
검색어 입력폼
  • (실행가능)DES 암호학 소스코드 포함 한글파일
    소스코드#define _CRT_SECURE_NO_WARNINGS#include #include #include /*상수 정의*/#define BLOCK_SIZE 8//DES블록사이즈#define DES_ROUND 16//DES 라운드 수/*타입정의*/typedef unsigned char BYTE;typedef unsigned int UINT;/*함수 선언*/void DES_Encryption(BYTE *p_text, BYTE *result, BYTE *key);//DES암호화 함수void DES_Decryption(BYTE *p_text, BYTE *result, BYTE *key);//DES 복호화 함수void IP(BYTE *in, BYTE *out);//초기 순열 함수void In_IP(BYTE *in, BYTE *out);//역 초기 순열 함수void EP(UINT r, BYTE* out);//화장 순열 함수UINT Permutation(UINT in);//순열 함수void PC1(BYTE* in, BYTE* out);//순열 선택 - 1 함수void PC2(UINT c, UINT d, BYTE* out);//순열 선택 - 2 함수UINT S_box_Transfer(BYTE* in);//S-box 변환 함수UINT f(UINT in, BYTE* rkey);//f함수void key_expansion(BYTE *key, BYTE exp_key[16][6]);//키 확장 함수void swap(UINT* x, UINT* y);//자리바꿈 함수void makeBit28(UINT* c, UINT *d, BYTE *data);//56bit를28bit로 나누는 함수UINT cir_shift(UINT m, int r);//28bit순환 시프트 함수void BtoW(BYTE *in, UINT *x, UINT *y);//byte를 word로 바꾸는 함수void WtoB(UINT l, UINT r, BYTE *out);//word를 byte로 바꾸는 함수/*전역 변수*// 12, 28, 17,1, 15, 23, 26, 5, 18, 31, 10,2, 8, 24, 14, 32, 27, 3, 9,19, 13, 30, 6, 22, 11, 4, 25 };//순열 선택-1 테이블BYTE PC_1[56] = { 57, 49, 41, 33, 25, 17, 9, 1,58, 50, 42, 34, 26, 18, 10, 2,59, 51, 43, 35, 27, 19, 11, 3,60, 52, 44, 36, 63, 55, 47, 39,31, 23, 15, 7, 62, 54, 46, 38,30, 22, 14, 6, 61, 53, 45, 37,29, 21, 13, 5, 28, 20, 12, 4};//순열 선택-2 테이블BYTE PC_2[48] = { 14, 17, 11, 24, 1, 5, 3, 28,15, 6, 21, 10, 23, 19, 12, 4,26, 8, 16, 7, 27, 20, 13, 2,41, 52, 31, 37, 47, 55, 30, 40,51, 45, 33, 48, 44, 49, 39, 56,34, 53, 46, 42, 50, 36, 29, 32};BYTE s_box[8][4][16] ={{ 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13},{ 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 3, 7, 0, 4, 10, 1, 13, 11, 6,4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13},{ 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12},{ 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11}};int main(){int i;int msg_len = 0, block_count = 0;//메세지 길이와 블록수BYTE p_text[128] = { 0, };//평문BYTE c_text[128] = { 0, };//암호문BYTE d_text[128] = { 0, };//복호문BYTE key[9] = { 0, };//비밀 키printf("*평문 입력 : ");scanf("%s",p_text);printf("*비밀키 입력 : ");scanf("%s", key);//메시지 길이와 블록 수를 계산msg_len = (int)strlen((char*)p_text);block_count = (msg_len % BLOCK_SIZE) ? (msg_len / BLOCK_SIZE + 1) : (msg_len / BLOCK_SIZE);for (i = 0; i < block_count; i++)DES_Encryption(&p_text[i * BLOCK_SIZE], &c_textIn_IP(data, result);//역 초기 순열}//DES 복호화void DES_Decryption(BYTE *c_text, BYTE *result, BYTE *key){int i;BYTE data[BLOCK_SIZE] = { 0, };BYTE rount_key[16][6] = { 0, };UINT L = 0, R = 0;key_expansion(key, rount_key);IP(c_text, data);//64bit 블록을 32bit로 나눔BtoW(data, &L, &R);//DES Round 1~16for (i = 0; i < DES_ROUND; i++) {L = L ^ f(R, rount_key[DES_ROUND - i - 1]);//복호화할 때는 라운드 키를 역순으로 적용//마지막 라운드는 swap을 하지 않는다.if (i != DES_ROUND - 1)swap(&L, &R);}WtoB(L, R, data);//32bit로 나누어진 블록을 다시 64bit블록으로 변환In_IP(data, result);//역 초기 순열}//자리바꿈void swap(UINT* x, UINT* y){UINT temp;temp = *x;*x = *y;*y = temp;}//8bit(byte) 단위의 데이터를 32bit(word) 단위의 데이터로 변환void BtoW(BYTE *in, UINT *x, UINT *y){int i;for (i = 0; i < 8; i++){if (i < 4)*x |= (UINT)in[i] < (24 - (i * 8));else*y |= (UINT)in[i] < (56 - (i * 8));}}//32bit(word) 단위의 데이터를 8bit(byte)단위의 데이터로 변환void WtoB(UINT l, UINT r, BYTE *out){int i;UINT mask = 0xFF000000;for (i = 0; i < 8; i++){if (i < 4)out[i] = (l & (mask >> i * 8)) >> (24 - (i * 8));elseoutsk >> (E[i] - 1))) {out[i / 8] |= (BYTE)(0x80 >> (i % 8));}}}UINT Permutation(UINT in){int i;UINT out = 0, mask = 0x80000000;for (i = 0; i < 32; i++){if (in & (mask >> (P[i] - 1)))out |= (mask >> i);}return out;}void key_expansion(BYTE* key, BYTE round_key[16][6]){int i;BYTE pc1_result[7] = { 0, };UINT c = 0, d = 0;PC1(key, pc1_result);makeBit28(&c, &d, pc1_result);for (i = 0; i < 16; i++){//28bit수노한 시프트c = cir_shift(c, i);d = cir_shift(d, i);PC2(c, d, round_key[i]);}}void makeBit28(UINT* c, UINT* d, BYTE* data){int i;BYTE mask = 0x80;for (i = 0; i < 56; i++){if (i < 28) {if (data[i / 8] & (mask >> (i % 8)))*c |= 0x08000000 >> i;}else {if (data[i / 8] & (mask >> (i % 8)))*c |= 0x08000000 >> (i-28);}}}void PC1(BYTE* in, BYTE* out) {int i, index, bit;UINT mask = 0x00000080;for (i = 0; i < 56; i++){index = (PC_1[i] - 1) / 8;bit = (PC_1[i] - 1) % 8;if (in[index]& (BYTE)(mask >> bit))out[i / 8] |= (BYTE)(mask >> (i % 8));}}UINT cir_shift(UINT n, int r){int n_shift[16] = { 1, 1, 2, 2, 2, 2,
    공학/기술| 2023.04.21| 12페이지| 5,000원| 조회(154)
    미리보기
  • 판매자 표지 순회트리 과제 ppt
    순회트리 과제 ppt
    A B C D E G F H 1. 다음은 어떤 이진트리의 전위순회와 중위순회를 나타낸 것이다. 어떤 이진 트리인지를 그려라 - 전위순회: ABDEGCFH - 중위순회: DBGEACFH2. 다음은 어떤 이진트리의 후위순회와 중위순회를 나타낸 것이다. 어떤 이진 트리인지를 그려라 - 후위순회: BDAEGCFH - 중위순회: DBGEACFH 2 번문제는 존재하지않는 이진트리 이라 그릴 수 없습니다 .1 2 3 4 {4,3,2,1} 1 3 4 {4,3,1,2} 2 3 2 4 {4,2,3,1} 1 1 2 4 {4,2,1,3} 3 3 1 4 {4,1,3,2} 2 2 1 4 {4,1,2,3} 3 1 2 4 3 {3,4,2,1} 1 4 3 {3,4,1,2} 2 4 2 3 {3,2,4,1} 1 1 2 3 {3,2,1,4} 4 4 1 3 {3,1,4,2} 2 2 1 3 {3,1,2,4} 4 1 4 3 2 {2,3,4,1} 1 3 2 {2,3,1,4} 4 3 4 2 {2,4,3,1} 1 1 4 2 {2,4,1,3} 3 3 1 2 {2,1,3,4} 4 4 1 2 {2,1,4,3} 3 4 2 3 1 {1,3,2,4} 4 3 1 {1,3,4,2} 2 3 2 1 {1,2,3,4} 4 4 2 1 {1,2,4,3} 3 3 4 1 {1,4,3,2} 2 2 4 1 {1,4,2,3} 3{nameOfApplication=Show}
    공학/기술| 2021.11.29| 3페이지| 1,000원| 조회(132)
    미리보기
  • 판매자 표지 Selection Sort, Insertion Sort, Quick Sort, Merge Sort ,Heap Sort 정렬 통계
    Selection Sort, Insertion Sort, Quick Sort, Merge Sort ,Heap Sort 정렬 통계
    과제5리포트n5개의 정렬 알고리즘에 대해 실험nSelection SortnInsertion SortnQuick SortnMerge Sort(Iterative)nHeap Sortn데이터 수 n은n5천, 1만, 5만, 10만, 50만, 1백만개에n실험 데이터는 random number generator 활용n각 n에 대해 10번의 다른 데이터에 대해 실험하여 평균 실행 시간에 대한 n표, 그래프 작성최종결과값N=5000일때N=10000일때N=50000일때N=100000일때
    공학/기술| 2021.11.29| 4페이지| 2,000원| 조회(131)
    미리보기
  • 판매자 표지 링크드리스트 LinkedList실습 한글파일
    링크드리스트 LinkedList실습 한글파일
    Linked List Merge Sorting[문제] 두 개의 정렬된 연결리스트를 합병하여 한 개의 정렬된 연결 리스트를 구성하는 프로그램을 작성하라. 이 문제를 해결하기 위해 다음과 같은 단계를 수행하는 프로그램을 작성하라.1. 20개의 공간을 가지는 배열을 선언하고, 1~1000 사이의 정수를 랜덤으로 20개를 할당하라.2. 이 배열을 선택 정렬로 오름차순으로 정렬하라.3. 정렬된 배열을 내용을 정렬된 연결 리스트로 구성하고(연결 리스트 변수는 a), 리스트의 각 노드를 순서대로 출력하라.4. 연결 리스트 b를 구성하고, 리스트의 각 노드를 순서대로 출력하라(1, 2, 3단계를 반복함).5. a와 b의 연결 리스트를 합병하여 하나로 정렬된 40개의 연결 리스트 d를 구성하고, d 리스트의 각 노드를 순서대로 출력하라.#include #include #include #include #define MAX 40# define SWAP(x, y, temp) ( (temp)=(x), (x)=(y), (y)=(temp) )typedef struct node {int n;struct node* next;}NODEtypedef struct {NODE* L1;NODE* L2;}TMPvoid display(NODE* head) {NODE* p = headwhile (p != NULL) {printf("%d->", p->n);p = p->next;}printf(" ");}//NODE* addNode(int n) {NODE* new_node;new_node = (NODE*)malloc(sizeof(NODE));new_node->n = nnew_node->next = NULLreturn new_node;}//void selection_sort(int list[], int n) {int i, j, least, temp;// (for (i = 0; i < n - 1; i++) {least = i;//for (j = i + 1; j < n j++) {if (list[j] < list[least])least = j;}//if (i != least) {SWAP(list[i], list[least], temp);}}}NODE* merge(NODE* p, NODE* q){NODE* r = NULL, * temp;if (p == NULL)r = qelse if (q == NULL)r = pelse {if (p->n < q->n) {r = ptemp = pp = p->next;temp->next = NULL}else {r = qtemp = qq = q->next;temp->next = NULL}while ((p != NULL) && (q != NULL)) {if (p->n < q->n) {temp->next = pp = p->next;temp = temp->next;temp->next = NULL}else {temp->next = qq = q->next;temp = temp->next;temp->next = NULL}}if (p != NULL)temp->next = pif (q != NULL)temp->next = q}return(r);}int main(void) {int i;srand((unsigned int)time(NULL));int A[20] = { 0 };int B[20] = { 0 };for (i = 1; i < MAX / 2; i++){A[i] = (rand() % 1000);}//1000for (i = 1; i < MAX / 2; i++){B[i] = (rand() % 1000);}//1000/////////////////////////////1문제 클리어 난수발생 1000까지selection_sort(A, MAX / 2);selection_sort(B, MAX / 2);//printf("A: ");for (i = 0; i < MAX / 2; i++) {printf("%d : ", A[i]);}printf("nB: ");for (i = 0; i < MAX / 2; i++) {printf("%d : ", B[i]);}///////////////////////////////2문제 클리어 선택정렬을 통해 오름차순정렬 후 각 배열20개 출력NODE* a;NODE* tmp;NODE* b;NODE* d;int n;int t;a = (NODE*)malloc(sizeof(NODE));//a->n = A[0];a->next = NULL//for (i = 1, tmp = a; i < MAX / 2 ; i++) {t = A[i];tmp->next = addNode(t);tmp = tmp->next;}//printf("na: ");display(a);/// //////////////////////////////////3문제 클리어 A배열20개를 a연결리스트로 구현b = (NODE*)malloc(sizeof(NODE));b->n = B[0];b->next = NULLfor (i = 1, tmp = b; i < MAX / 2; i++) {t = B[i];tmp->next = addNode(t);tmp = tmp->next;}printf("nb: ");display(b);/////////////////////4문제 클리어 클리어 B배열20개를 b연결리스트로 구현d=merge(a, b);printf("nb: ");display(d);/// //////////////////////////5문제 클리어 2개의 연결리스트a,b를 d로합치면서 목적인 병합정렬 완료return 0;}
    공학/기술| 2021.11.29| 5페이지| 2,500원| 조회(175)
    미리보기
  • 판매자 표지 2021년 생체(수영)합격자의 구술요약 정리
    2021년 생체(수영)합격자의 구술요약 정리
    ● 심판장 영법심판 출발심판 반환심판등(위치,인원,역할) [18~21]심판장 2명/ 출발심판 2명 / 영법심판 4명 / 반환심판주임 2명(풀 양끝에 1명씩)반환심판 (각 레인의 양 끝에 1명씩)/ 소집심판 2명 / 기록주임 1명 / 아나운서 1명 / 통제실 감독관 1명총 심판을 통틀어 중앙심판(현 활동심판)이라 한다▶심판장 (2명) -출발심판 옆-모든 임원 통제, 임명 승인, 대회와 관련된 모든 사항 및 규칙에 관해 임원에게 지시합니다.-FINA룰에 의거해 경기중 일어나는 모든 문제를 결정하며 룰로 해결되지 못 하는 문제의 최종결정을 합니다.-호각으로 탈의 시키고 출발 준비를 하게합니다. (출발심판에게 한 팔을 뻗어 선수 인계/출발신호 전까지)-진행 중인 경기와 관련된 모든 항의에 대한 판정과 실격처리 권한을 가집니다.
    기타| 2021.11.27| 4페이지| 5,000원| 조회(874)
    미리보기
전체보기
받은후기 5
5개 리뷰 평점
  • A+최고예요
    2
  • A좋아요
    2
  • B괜찮아요
    1
  • C아쉬워요
    0
  • D별로예요
    0
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 04월 20일 월요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
6:38 오후
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감