前田稔(Maeda Minoru)の超初心者のプログラム入門
![]()
![]()
// 乱数を発生する
unsigned short random(int *n)
{
*n= *n * 5041+13;
return (unsigned short)*n;
}
|
// シャッフルする
void Shuffle(int t[],int *n)
{ int i,j;
for(i=0; i<SIZE; i++) t[i]= -1;
for(i=0; i<SIZE; i++)
{ for(j=random(n)%SIZE; t[j]!=-1; j=(j+1)%SIZE);
t[j]= i;
}
}
|
#include <conio.h>
printf("%s を変換して %s を作成しました\n",IN_F,OT_F);
_getch();
|
/*★ TEXT 文章を暗号化する 前田 稔 ★*/
#include <stdio.h>
#include <conio.h>
#define SIZE (0x100-0x30)
char buf[32768];
char IN_F[256];
char OT_F[256]= "encode.txt";
unsigned int len;
int et[SIZE]; //Encode Table
// 乱数を発生する
unsigned short random(int *n)
{
*n= *n * 5041+13;
return (unsigned short)*n;
}
// シャッフルする
void Shuffle(int t[],int *n)
{ int i,j;
for(i=0; i<SIZE; i++) t[i]= -1;
for(i=0; i<SIZE; i++)
{ for(j=random(n)%SIZE; t[j]!=-1; j=(j+1)%SIZE);
t[j]= i;
}
}
// buf[] のコード(30 ~ FF) を et[] で暗号化する
void encode(char buf[], unsigned int len)
{ int i,wk;
unsigned char wc;
wk= len;
for(i=0; i<wk; i++)
{ wc= buf[i];
if (wc>=0x30) buf[i]= (char)(et[wc-0x30]+0x30);
}
}
int main()
{ FILE *FI,*FO; //FILE の定義
int wk;
wk= 123;
Shuffle(et,&wk); //30 ~ FF をシャッフル
printf("入力ファイル名をタイプして下さい\n");
scanf_s("%s",IN_F,256);
if (fopen_s(&FI,IN_F,"rb")!=0)
{ printf("INPUT FILE open error[%s]\n",IN_F);
return(-1);
}
len= fread(buf,1,32768,FI);
fclose(FI);
encode(buf,len); //buf[] を et[] で暗号化
if (fopen_s(&FO,OT_F,"wb")!=0)
{ printf("OUTPUT file open error[%s]\n",OT_F);
return(-1);
}
fwrite(buf,1,len,FO);
fclose(FO);
printf("%s を変換して %s を作成しました\n",IN_F,OT_F);
_getch();
return(0);
}
|
![]()
/*★ 暗号化した文章を復号化する 前田 稔 ★*/
#include <stdio.h>
#include <conio.h>
#define SIZE (0x100-0x30)
char buf[32768];
char IN_F[256]= "encode.txt";
char OT_F[256]= "decode.txt";
unsigned int len;
int et[SIZE]; //Encode Table
int dt[SIZE]; //Decode Table
// 乱数を発生する
unsigned short random(int *n)
{
*n= *n * 5041+13;
return (unsigned short)*n;
}
// シャッフルする
void Shuffle(int t[],int *n)
{ int i,j;
for(i=0; i<SIZE; i++) t[i]= -1;
for(i=0; i<SIZE; i++)
{ for(j=random(n)%SIZE; t[j]!=-1; j=(j+1)%SIZE);
t[j]= i;
}
}
// buf[] の TEXT を 復号化 する
void decode(char buf[], unsigned int len)
{ int i,wk;
unsigned char wc;
// Decode Table を作成する
for(i=0; i<SIZE; i++) dt[et[i]]= i;
wk= len;
for(i=0; i<wk; i++)
{ wc= buf[i];
if (wc>=0x30) buf[i]= (char)dt[wc-0x30]+0x30;
}
}
int main()
{ FILE *FI,*FO; //FILE の定義
int wk;
wk= 123;
Shuffle(et,&wk); //30 ~ FF をシャッフル
if (fopen_s(&FI,IN_F,"rb")!=0)
{ printf("INPUT FILE open error[%s]\n",IN_F);
return(-1);
}
len= fread(buf,1,32768,FI);
fclose(FI);
decode(buf,len); //buf[] を Decode
if (fopen_s(&FO,OT_F,"wb")!=0)
{ printf("OUTPUT file open error[%s]\n",OT_F);
return(-1);
}
fwrite(buf,1,len,FO);
fclose(FO);
printf("%s を Decode して %s に出力しました\n",IN_F,OT_F);
_getch();
return(0);
}
|
![]()