c语言作业数据加密,密码学作业 流加密(C语言)

#include

#include

void Encrypt(char *filename);

void Decrypt(char *filename);

int main()

{

char filename[20];

int select;

printf("1:Encryption \n2:Decryption \n Please select:");

scanf("%d",&select);

switch(select)

{

case 1: printf("Please input the filename you want to encrypt:");

scanf("%s",filename);

Encrypt(filename);

break;

case 2: printf("Please input the filename you want to decrypt:");

scanf("%s",filename);

Decrypt(filename);

break;

default:printf("Input wrong!"); }

return 0;

}

void Encrypt(char *filename)

{

char ch;

unsigned int s; //密钥种子

unsigned char k; //密钥流

printf("Please input a sand seed:");

scanf("%u",&s);

srand(s); //初始化随机数

FILE*fp1,*fp2;

if((fp1=fopen(filename,"r"))==NULL)

{

printf("The ciphertext create failure!\n");

exit(0);

}

if((fp2=fopen("miwen.txt","w"))==NULL)

{

printf("The ciphertext open failure!\n");

exit(0);

}

ch=fgetc(fp1);

while(ch!=EOF)

{

k=rand()%6;

ch=ch^k;

fputc(ch,fp2); //写入加密文件

ch=fgetc(fp1); //读取下一个字符

}//加密过程

printf("The plaintext is encrypted successfully!please check in miwen.txt\n");

fclose(fp1);

fclose(fp2);

}

void Decrypt(char *filename) {  char ch;  unsigned char k; //密钥流  unsigned int s; //密钥种子  FILE *fp1,*fp2;  printf("Please input a srand seed:");  scanf("%u",&s);  srand(s); //初始化随机数  if((fp1=fopen(filename,"r"))==NULL)  {   printf("The ciphertext open failure!\n");   exit(0);  }    if((fp2=fopen("jiemi.txt","w"))==NULL)  {   printf("The restore plaintext open failure!\n");   exit(0);  }  ch=fgetc(fp1);  k=rand()%6;  while(ch!=EOF)  {   ch=ch^k;   fputc(ch,fp2); //写入解密文件   putchar(ch);  //输出到屏幕   ch=fgetc(fp1); //读取下一个字符   k=rand()%6;  }//解密过程  printf("The plaintext is decrypted successfully!please check in jiemi.txt\n");  fclose(fp1);  fclose(fp2); }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值