c语言加密案例,c语言写加密程序

本文目录一览:

简单的C语言加密程序

#includestdio.h

#includestdlib.h

main()

{

int key;

char ch;

printf(“\n请输入密钥:”);

scanf(“%d”,key);

printf(“得到对应明文如下:”);

while((ch=getchar())!=’\r’)

(ch+key)122?putchar(ch-122+33+key):

((ch+key)33?putchar(ch+122+key):putchar(ch+key));

}

输入输出如下:

请输入密钥:20addse

得到对应明文如下:uxx.y

你先输入一个任意的整数,如20,然后在键盘上输入一段任意的字符如addse

按回车键结束,就会得到结果 如:uxx.y

下面是另一组输入输出:

请输入密钥:35asjRYIRER!@#$^^*

得到对应明文如下:+=4u#luhuDcFG((MI-

具体是如何加密,你应该能看懂,就是用一个三目运算符 ? :控制。

RSA加密解密算法示例(C语言)

#include stdlib.h

#include stdio.h

#include string.h

#include math.h

#include time.h

#define PRIME_MAX 200   // 生成素数范围

#define EXPONENT_MAX 200 // 生成指数e范围

#define Element_Max 127    // 加密单元的最大值,这里为一个char, 即1Byte

char str_read[100]=”hello world !”;  // 待加密的原文

int str_encrypt[100];                // 加密后的内容

char str_decrypt[100];              // 解密出来的内容

int str_read_len;                    // str_read 的长度

int prime1, prime2;                  // 随机生成的两个质数

int mod, eular;                      // 模数和欧拉数

int pubKey, priKey;                  // 公钥指数和私钥指数

// 生成随机素数,实际应用中,这两个质数越大,就越难破解。

int randPrime()

{

int prime, prime2, i;

next:

prime = rand() % PRIME_MAX;   // 随机产生数

if (prime = 1) goto next;      // 不是质数,生成下一个随机数

if (prime == 2 || prime == 3) return prime;

prime2 = prime / 2;              // prime=4, prime2 的平方必定大于 prime , 因此只检查小于等于prime2的数

for (i = 2; i = prime2; i++)   // 判断是否为素数

{

if (i * i prime) return prime;

if (prime % i == 0) goto next;  // 不是质数,生成下一个随机数

}

}

// 欧几里德算法,判断a,b互质

int gcd(int a, int b)

{

int temp;

while (b != 0) {

temp = b;

b = a % b;

a = temp;

}

return a;

}

//生成公钥指数,条件是 1 e 欧拉数,且与欧拉数互质。

int randExponent()

{

int e;

while (1)

{

e = rand() % eular; if (e EXPONENT_MAX) break;

}

while (1)

{

if (gcd(e, eular) == 1) return e; e = (e + 1) % eular; if (e == 0 || e EXPONENT_MAX) e = 2;

}

}

//生成私钥指数

int inverse()

{

int d, x;

while (1)

{

d = rand() % eular;

x = pubKey * d % eular;

if (x == 1)

{

return d;

}

}

}

//加密函数

void jiami()           

{

str_read_len = strlen(str_read);      //从参数表示的地址往后找,找到第一个’\0’,即串尾。计算’\0’至首地址的“距离”,即隔了几个字符,从而得出长度。

printf(“密文是:”);

for (int i = 0; i str_read_len; i++)

{

int C = 1; int a = str_read[i], b = a % mod;

for (int j = 0; j pubKey; j++) //实现加密

{

C = (C*b) % mod;

}

str_encrypt[i] = C;

printf(“%d “, str_encrypt[i]);

}

printf(“\n”);

}

//解密函数

void jiemi()         

{

int i=0;  for (i = 0; i str_read_len; i++)

{

int C = 1; int a = str_encrypt[i], b=a%mod;

for (int j = 0; j priKey; j++)

{

C = (C * b) % mod;

}

str_decrypt[i] = C;

}

str_decrypt[i] = ‘\0’; printf(“解密文是:%s \n”, str_decrypt);

}

int main()

{

srand(time(NULL));

while (1)

{

prime1 = randPrime(); prime2 = randPrime(); printf(“随机产生两个素数:prime1 = %d , prime2 = %d “, prime1, prime2);

mod = prime1 * prime2; printf(“模数:mod = prime1 * prime2 = %d \n”, mod); if (mod Element_Max) break; // 模数要大于每个加密单元的值

}

eular = (prime1 – 1) * (prime2 – 1);  printf(“欧拉数:eular=(prime1-1)*(prime2-1) = %d \n”, eular);

pubKey = randExponent(); printf(“公钥指数:pubKey = %d\n”, pubKey);

priKey = inverse(); printf(“私钥指数:priKey = %d\n私钥为 (%d, %d)\n”, priKey, priKey, mod);

jiami(); jiemi();

return 0;

}

用C语言设计一个文件加密与解密程序

c语言文件加密和解密方法如下:

1、首先打开VC++6.0;

2、选择文件,新建;

3、选择C++ source file 新建一个空白文档;

4、声明头文件

#includestdio.h

#includestdlib.h

#includestring.h

首先写个加密函数,算法就是简介里说的;

void EncryptFile(FILE *sfp,FILE *dfp,char pwd)

{

char ch;

if(sfp==0||dfp==0)

{

printf(“ERROR!\n”);

return;

}

while((ch=fgetc(sfp))!=EOF)

{

if((ch=’a’)(ch=’z’))

{

ch=(ch-‘a’+1)%26+’a’;

ch=ch^pwd;

}

if((ch=’A’)(ch=’Z’))

{

ch=(ch-‘A’+1)%26+’A’;

ch=ch^pwd;

}

fputc(ch,dfp);

}

}

写解密子函数:与加密的过程相反;

void DecryptFile(FILE *sfp,FILE *dfp,char pwd)

{

char ch;

while((ch=fgetc(sfp))!=EOF)

{

if((ch=’a’)(ch=’z’))

{

ch=ch^pwd;

ch=(ch-‘a’+25)%26+’a’;

}

if((ch=’A’)(ch=’Z’))

{

ch=ch^pwd;

ch=(ch-‘A’+25)%26+’A’;

}

fputc(ch,dfp);

}

}

输出函数,输出文件内容

void OutputFile(FILE *fp)

{

char ch;

while((ch=fgetc(fp))!=EOF)

putchar(ch);

}

 主函数,主要调用这几个函数

int main()

{

/*用户输入的要加密的文件名*/

char sfilename[20];

/*用户输入加密后保存的文件名*/

char dfilename[20];

/*用来保存密码字符*/

char pwd;

FILE *sfp,*dfp;

printf(“\nPlease input filename to be encrypted:\n”);

/*得到要加密的文件名*/

gets(sfilename);

/*得到加密后你要的文件名*/

printf(“input filename to save the encrypted file:\n”);

gets(dfilename);

/*得到加密字符*/

printf(“Please input your Password:\n”);

//scanf(“%c”,pwd);

pwd=getch();

/*屏幕以*来表示输入的加密字符*/

printf(“*\n”);

/*以只读方式打开要加密的文件*/

if((sfp=fopen(sfilename,”r”))==0)

{

printf(“Can’t open the file :%s\n”,sfilename);

exit(0);

}

/*输出要加密的文件*/

printf(“\nThe the text of file to be encrypted is:\n”);

OutputFile(sfp);

/*建立加密后的文件*/

if((dfp=fopen(dfilename,”w+”))==0)

{

printf(“Can’t open or create the file :%s\n”,dfilename);

//exit(0);

}

/*文件加密*/

fseek(sfp,0L,SEEK_SET);

EncryptFile(sfp,dfp,pwd);

printf(“\n\nEncrypted the file successfully!\n”);

/*输出加密后的文件*/

printf(“\nAfter encrypting the text of file is:\n”);

fseek(dfp,0L,SEEK_SET);

OutputFile(dfp);

fclose(sfp);

fclose(dfp);

getch();

return 0;

}

C语言字符串加密 多实例

string i;

int k;

cinik;

for (int q=0;qi.length();q++)

{

if (i[q]=’a’ i[q]=’z’)

i[q]=char((i[q]-‘a’+k)%26+’a’);

else

if (i[q]=’A’i[q]=’Z’)

i[q]=char((i[q]-‘A’+k)%26+’A’);

}

C语言设计一个简单的加密解密程序

C语言设计一个简单的加密解密程序如下:

加密程序代码:

#includestdio.h

main()

{

char c,filename[20];

FILE *fp1,*fp2;

printf(“请输入待加密的文件名:\n”);

scanf(“%s”,filename);

fp1=fopen(filename,”r”);

fp2=fopen(“miwen.txt”,”w”);

do

{

c=fgetc(fp1);

if(c=32c=126)

{

c=c-32;

c=126-c;

}

if(c!=-1)

fprintf(fp2,”%c”,c);

}

while(c!=-1);

}

解密程序代码:

#includestdio.h

#includestring.h

main()

{

char c,filename[20];

char yanzhengma[20];

FILE *fp1,*fp2;

printf(“请输入待解密文件名:\n”);

scanf(“%s”,filename);

printf(“请输入验证码:\n”);

scanf(“%s”,yanzhengma);

if(strcmp(yanzhengma,”shan”)==0)

{

fp1=fopen(filename,”r”);

fp2=fopen(“yuanwen.txt”,”w”);

do

{

c=fgetc(fp1);

if(c=32c=126)

{

c=126-c;

c=32+c;

}

if(c!=-1)

fprintf(fp2,”%c”,c);

}

while(c!=-1);

}

else

{

printf(“验证码错误!请重新输入:\n”);

scanf(“%s”,filename);

}

}

原创文章,作者:UOWZ,如若转载,请注明出处:https://www.506064.com/n/141809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
UOWZUOWZ
上一篇 2024-10-09 09:52
下一篇 2024-10-09 09:52

相关推荐

  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python数据统计案例的实现

    Python作为一个高级编程语言,拥有着丰富的数据处理库和工具,能够快速、高效地进行各类数据处理和分析。本文将结合实例,从多个方面详细阐述Python数据统计的实现。 一、数据读取…

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python购物车程序

    Python购物车程序是一款基于Python编程语言开发的程序,可以实现购物车的相关功能,包括商品的添加、购买、删除、统计等。 一、添加商品 添加商品是购物车程序的基础功能之一,用…

    编程 2025-04-29
  • 爬虫是一种程序

    爬虫是一种程序,用于自动获取互联网上的信息。本文将从如下多个方面对爬虫的意义、运行方式、应用场景和技术要点等进行详细的阐述。 一、爬虫的意义 1、获取信息:爬虫可以自动获取互联网上…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • Vb运行程序的三种方法

    VB是一种非常实用的编程工具,它可以被用于开发各种不同的应用程序,从简单的计算器到更复杂的商业软件。在VB中,有许多不同的方法可以运行程序,包括编译器、发布程序以及命令行。在本文中…

    编程 2025-04-29

发表回复

登录后才能评论