주석좀 ㅠㅠ 제발..간단하게라도 달아주세요.ㅠ
나샘
#include string.h
#include math.h
#include “MATHMOD.H”
void hill_mono_encrypt(char plain[],char cipher[],char rk[],int a,int k){
int x,y;
unsigned int i,j;
for(i=0;istrlen(plain);i++){
for(j=0;jstrlen(rk);j++)
if(plain[i]==rk[j])
x=j;
y=mod26(multiply_mod26(a,x)+k);
cipher[i]=rk[y];
}
cipher[strlen(plain)]=”;
}
void hill_mono_decrypt(char plain[],char cipher[],char rk[],int a,int k){
int x,y,n;
unsigned int i,j;
n=regular_mod26(a);
for(i=0;istrlen(cipher);i++){
for(j=0;jstrlen(rk);j++)
if(cipher[i]==rk[j])
y=j;
x=multiply_mod26(n,(y-k));
plain[i]=rk[x];
}
plain[strlen(cipher)]=”;
}
void hill_di_encrypt(char plain[],char cipher[],char rk[],int a,int b,int c,int d,int k1,int k2){
int x1,x2;
int y1,y2;
unsigned int i,j;
for(i=0;istrlen(plain);i+=2){
for(j=0;j26;j++){
if(plain[i]==rk[j])
x1=j;
if(plain[i+1]==rk[j])
x2=j;
}
y1=mod26(multiply_mod26(a,x1)+multiply_mod26(b,x2)+k1);
y2=mod26(multiply_mod26(c,x1)+multiply_mod26(d,x2)+k2);
cipher[i]=rk[y1];
cipher[i+1]=rk[y2];
}
cipher[strlen(plain)]=”;
}
void hill_di_decrypt(char plain[],char cipher[],char rk[],int a,int b,int c,int d,int k1,int k2){
int n,y1,y2;
int x1,x2;
unsigned int i,j;
n=regular_mod26(det_m22_mod26(a,b,c,d));
for(i=0;istrlen(cipher);i+=2){
for(j=0;j26;j++){
if(cipher[i]==rk[j])
y1=j;
if(cipher[i+1]==rk[j])
y2=j;
}
x1=multiply_mod26(n,(multiply_mod26(d,(y1-k1))-multiply_mod26(b,(y2-k2))));
x2=multiply_mod26(n,(multiply_mod26(a,(y2-k2))-multiply_mod26(c,(y1-k1))));
plain[i]=rk[x1];
plain[i+1]=rk[x2];
}
plain[strlen(cipher)]=”;
}
void hill_tri_encrypt(char plain[], char cipher[], char rk[], int a,int b,int c,int d,int e,int f,int g,int h,int i){
unsigned int j,k;
int x1,x2,x3;
int y1,y2,y3;
for(j=0;jstrlen(plain);j+=3){
for(k=0;k26;k++){
if(plain[j]==rk[k])
x1=k;
if(plain[j+1]==rk[k])
x2=k;
if(plain[j+2]==rk[k])
x3=k;
}
y1=mod26(multiply_mod26(a,x1)+multiply_mod26(b,x2)+multiply_mod26(c,x3));
y2=mod26(multiply_mod26(d,x1)+multiply_mod26(e,x2)+multiply_mod26(f,x3));
y3=mod26(multiply_mod26(g,x1)+multiply_mod26(h,x2)+multiply_mod26(i,x3));
cipher[j]=rk[y1];
cipher[j+1]=rk[y2];
cipher[j+2]=rk[y3];
}
cipher[strlen(plain)]=”;
}
void hill_tri_decrypt(char plain[],char cipher[],char rk[],int a,int b,int c,int d,int e,int f,int g,int h,int i){
unsigned int j,k;
int y1,y2,y3;
int x1,x2,x3;
int n;
n=regular_mod26(det_m33_mod26(a,b,c,d,e,f,g,h,i));
for(j=0;jstrlen(cipher);j+=3){
for(k=0;k26;k++){
if(cipher[j]==rk[k])
y1=k;
if(cipher[j+1]==rk[k])
y2=k;
if(cipher[j+2]==rk[k])
y3=k;
}
x1=multiply_mod26(n,det_m33_mod26(y1,b,c,y2,e,f,y3,h,i));
x2=multiply_mod26(n,det_m33_mod26(a,y1,c,d,y2,f,g,y3,i));
x3=multiply_mod26(n,det_m33_mod26(a,b,y1,d,e,y2,g,h,y3));
plain[j]=rk[x1];
plain[j+1]=rk[x2];
plain[j+2]=rk[x3];
}
plain[strlen(cipher)]=”;
}
void hill_poly_encrypt(char plain[],char cipher[],char rk[],int a1,int a2,int a3,int a4,int b1,int b2,int b3,int b4,int c1,int c2,int c3,int c4,int d1,int d2,int d3,int d4,int k11,int k12,int k13,int k14,int k21,int k22,int k23,int k24){
unsigned int i,j;
int x11,x12,x13,x14,x21,x22,x23,x24;
int y11,y12,y13,y14,y21,y22,y23,y24;
int C1,C2,C3,C4,D1,D2,D3,D4;
for(i=0;istrlen(plain);i+=8){
for(j=0;j26;j++){
if(plain[i]==rk[j])
x11=j;
if(plain[i+1]==rk[j])
x12=j;
if(plain[i+2]==rk[j])
x13=j;
if(plain[i+3]==rk[j])
x14=j;
if(plain[i+4]==rk[j])
x21=j;
if(plain[i+5]==rk[j])
x22=j;
if(plain[i+6]==rk[j])
x23=j;
if(plain[i+7]==rk[j])
x24=j;
}
multiply_matrix_mod26(a1,a2,a3,a4,x11,x12,x13,x14,&C1,&C2,&C3,&C4);
multiply_matrix_mod26(b1,b2,b3,b4,x21,x22,x23,x24,&D1,&D2,&D3,&D4);
y11=mod26(C1+D1+k11);
y12=mod26(C2+D2+k12);
y13=mod26(C3+D3+k13);
y14=mod26(C4+D4+k14);
multiply_matrix_mod26(c1,c2,c3,c4,x11,x12,x13,x14,&C1,&C2,&C3,&C4);
multiply_matrix_mod26(d1,d2,d3,d4,x21,x22,x23,x24,&D1,&D2,&D3,&D4);
y21=mod26(C1+D1+k21);
y22=mod26(C2+D2+k22);
y23=mod26(C3+D3+k23);
y24=mod26(C4+D4+k24);
cipher[i]=rk[y11];
cipher[i+1]=rk[y12];
cipher[i+2]=rk[y13];
cipher[i+3]=rk[y14];
cipher[i+4]=rk[y21];
cipher[i+5]=rk[y22];
cipher[i+6]=rk[y23];
cipher[i+7]=rk[y24];
}
cipher[strlen(plain)]=”;
}
void hill_poly_decrypt(char plain[],char cipher[],char rk[],int a1,int a2,int a3,int a4,int b1,int b2,int b3,int b4,int c1,int c2,int c3,int c4,int d1,int d2,int d3,int d4,int k11,int k12,int k13,int k14,int k21,int k22,int k23,int k24){
unsigned int i,j;
int n;
int x11,x12,x13,x14,x21,x22,x23,x24;
int y11,y12,y13,y14,y21,y22,y23,y24;
int C1,C2,C3,C4,D1,D2,D3,D4;
int K11,K12,K13,K14,K21,K22,K23,K24;
int adj[4][4];
int M[4][4];
n=regular_mod26(mod26(multiply_mod26(a1,det_m33_mod26(a4,b3,b4,c2,d1,d2,c4,d3,d4))-multiply_mod26(a3,det_m33_mod26(a2,b1,b2,c2,d1,d2,c4,d3,d4))+multiply_mod26(c1,det_m33_mod26(a2,b1,b2,a4,b3,b4,c4,d3,d4))-multiply_mod26(c3,det_m33_mod26(a2,b1,b2,a4,b3,b4,c2,d1,d2))));
M[0][0]=det_m33_mod26(a4,b3,b4,c2,d1,d2,c4,d3,d4);
M[1][0]=det_m33_mod26(a2,b1,b2,c2,d1,d2,c4,d3,d4);
M[2][0]=det_m33_mod26(a2,b1,b2,a4,b3,b4,c4,d3,d4);
M[3][0]=det_m33_mod26(a2,b1,b2,a4,b3,b4,c2,d1,d2);
M[0][1]=det_m33_mod26(a3,b3,b4,c1,d1,d2,c3,d3,d4);
M[1][1]=det_m33_mod26(a1,b1,b2,c1,d1,d2,c3,d3,d4);
M[2][1]=det_m33_mod26(a1,b1,b2,a3,b3,b4,c3,d3,d4);
M[3][1]=det_m33_mod26(a1,b1,b2,a3,b3,b4,c1,d1,d2);
M[0][2]=det_m33_mod26(a3,a4,b4,c1,c2,d2,c3,c4,d4);
M[1][2]=det_m33_mod26(a1,a2,b2,c1,c2,d2,c3,c4,d4);
M[2][2]=det_m33_mod26(a1,a2,b2,a3,a4,b4,c3,c4,d4);
M[3][2]=det_m33_mod26(a1,a2,b2,a3,a4,b4,c1,c2,d2);
M[0][3]=det_m33_mod26(a3,a4,b3,c1,c2,d1,c3,c4,d3);
M[1][3]=det_m33_mod26(a1,a2,b1,c1,c2,d1,c3,c4,d3);
M[2][3]=det_m33_mod26(a1,a2,b1,a3,a4,b3,c3,c4,d3);
M[3][3]=det_m33_mod26(a1,a2,b1,a3,a4,b3,c1,c2,d1);
for(i=0;i4;i++)
for(j=0;j4;j++)
adj[i][j]=multiply_mod26(n,M[j][i]*(int)pow(-1,j+i));
multiply_matrix_mod26(adj[0][0],adj[0][1],adj[1][0],adj[1][1],k11,k12,k13,k14,&C1,&C2,&C3,&C4);
multiply_matrix_mod26(adj[0][2],adj[0][3],adj[1][2],adj[1][3],k21,k22,k23,k24,&D1,&D2,&D3,&D4);
K11=reciprocal_mod26(C1+D1);
K12=reciprocal_mod26(C2+D2);
K13=reciprocal_mod26(C3+D3);
K14=reciprocal_mod26(C4+D4);
multiply_matrix_mod26(adj[2][0],adj[2][1],adj[3][0],adj[3][1],k11,k12,k13,k14,&C1,&C2,&C3,&C4);
multiply_matrix_mod26(adj[2][2],adj[2][3],adj[3][2],adj[3][3],k21,k22,k23,k24,&D1,&D2,&D3,&D4);
K21=reciprocal_mod26(C1+D1);
K22=reciprocal_mod26(C2+D2);
K23=reciprocal_mod26(C3+D3);
K24=reciprocal_mod26(C4+D4);
for(i=0;istrlen(cipher);i+=8){
for(j=0;j26;j++){
if(cipher[i]==rk[j])
y11=j;
if(cipher[i+1]==rk[j])
y12=j;
if(cipher[i+2]==rk[j])
y13=j;
if(cipher[i+3]==rk[j])
y14=j;
if(cipher[i+4]==rk[j])
y21=j;
if(cipher[i+5]==rk[j])
y22=j;
if(cipher[i+6]==rk[j])
y23=j;
if(cipher[i+7]==rk[j])
y24=j;
}
multiply_matrix_mod26(adj[0][0],adj[0][1],adj[1][0],adj[1][1],y11,y12,y13,y14,&C1,&C2,&C3,&C4);
multiply_matrix_mod26(adj[0][2],adj[0][3],adj[1][2],adj[1][3],y21,y22,y23,y24,&D1,&D2,&D3,&D4);
x11=mod26(C1+D1+K11);
x12=mod26(C2+D2+K12);
x13=mod26(C3+D3+K13);
x14=mod26(C4+D4+K14);
multiply_matrix_mod26(adj[2][0],adj[2][1],adj[3][0],adj[3][1],y11,y12,y13,y14,&C1,&C2,&C3,&C4);
multiply_matrix_mod26(adj[2][2],adj[2][3],adj[3][2],adj[3][3],y21,y22,y23,y24,&D1,&D2,&D3,&D4);
x21=mod26(C1+D1+K21);
x22=mod26(C2+D2+K22);
x23=mod26(C3+D3+K23);
x24=mod26(C4+D4+K24);
plain[i]=rk[x11];
plain[i+1]=rk[x12];
plain[i+2]=rk[x13];
plain[i+3]=rk[x14];
plain[i+4]=rk[x21];
plain[i+5]=rk[x22];
plain[i+6]=rk[x23];
plain[i+7]=rk[x24];
}
plain[strlen(cipher)]=”;
}
:
-
초엘
이렇게 긴 소스의 주석을.....간단하게 달아도 엄청난 분량 -_-;;;;;;
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2694069 | unsigned 질문입니다. | 힘차 | 2025-05-07 |
2694012 | 전공 비전공자 개발자 (10) | 말글 | 2025-05-07 |
2693984 | 오버로딩이 무엇인가요? (2) | 헛매질 | 2025-05-07 |
2693956 | PlaySound재생이 안됩니다!(C에 음악넣기) | 지존 | 2025-05-06 |
2693928 | &와 *의 사용에 관한 명확한 이해 | 제나 | 2025-05-06 |
2693903 | 반복문 설명좀요 ㅠㅠ (2) | 란새 | 2025-05-06 |
2693869 | stdio.h 는 왜 쓰는건가요? (1) | 큰꽃들 | 2025-05-06 |
2693842 | 포인터 변수의 주소값끼리 더하는 것에 대해서 질문드립니다. (1) | 진솔 | 2025-05-05 |
2693811 | 소수 출력;;;; | 화이트캣 | 2025-05-05 |
2693788 | 이런 함수는 없나요? (3) | 앤드류 | 2025-05-05 |
2693758 | txt파일 불러와서 행렬로 저장 | 큰애 | 2025-05-05 |
2693727 | scanf 오류 문제!! (2) | 큰나래 | 2025-05-04 |
2693704 | 구조체 주소록 문제인데 도와주세요 (2) | 도1도캣 | 2025-05-04 |
2693676 | 열혈강의 c언어 질문입니다 | 하양이 | 2025-05-04 |
2693647 | 12.620000 을요 12.620 으로 어떻게 표현해요? (2) | 파도 | 2025-05-04 |
2693619 | 타이틀 코드.. | 단순드립 | 2025-05-03 |
2693591 | 컴파일 에러에서 질문드립니다 (3) | 게자리 | 2025-05-03 |
2693463 | 동적할당 이용시 fwrite사용을 어떻게 해야하나요..? (10) | 일본어못해요 | 2025-05-02 |
2693387 | 배열문제입니다 수정오류캡쳐했습니다 (6) | 연하얀 | 2025-05-01 |
2693356 | text 입출력 내림차순 질문입니다 ㅠ | 빛글 | 2025-05-01 |