c语言密码的加密程序(c语言密码加密程序Today)

本篇文章给大家谈谈c语言密码的加密程序,以及c语言密码加密程序Today对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、c语言加密算法2、用c语言设计一个简单地加密算,解密算法,并说明其中的原理3、C语言字符串加密4、c语言字母加密?5、如何用C语言编程一数字加密程序?6、如何用C语言对文件进行加密和解密?

c语言加密算法

看你催就仓促写了个,自我感觉写的不是很好,但是能用了。数据只能是大写字母组成的字符串。

加密的时候,输入Y,然后输入要加密的文本(大写字母)

解密的时候,输入N,然后输入一个整数n表示密文的个数,然后n个整数表示加密时候得到的密文。

/*RSA algorithm */

#include stdio.h

#include string.h

#include stdlib.h

#define MM 7081

#define KK 1789

#define PHIM 6912

#define PP 85

typedef char strtype[10000];

int len;

long nume[10000];

int change[126];

char antichange[37];

void initialize()

{ int i;

char c;

for (i = 11, c = ‘A’; c = ‘Z’; c ++, i ++)

{ change[c] = i;

antichange[i] = c;

}

}

void changetonum(strtype str)

{ int l = strlen(str), i;

len = 0;

memset(nume, 0, sizeof(nume));

for (i = 0; i l; i ++)

{ nume[len] = nume[len] * 100 + change[str[i]];

if (i % 2 == 1) len ++;

}

if (i % 2 != 0) len ++;

}

long binamod(long numb, long k)

{ if (k == 0) return 1;

long curr = binamod (numb, k / 2);

if (k % 2 == 0)

return curr * curr % MM;

else return (curr * curr) % MM * numb % MM;

}

long encode(long numb)

{ return binamod(numb, KK);

}

long decode(long numb)

{ return binamod(numb, PP);

}

main()

{ strtype str;

int i, a1, a2;

long curr;

initialize();

puts(“Input ‘Y’ if encoding, otherwise input ‘N’:”);

gets(str);

if (str[0] == ‘Y’)

{ gets(str);

changetonum(str);

printf(“encoded: “);

for (i = 0; i len; i ++)

{ if (i) putchar(‘-‘);

printf(” %ld “, encode(nume[i]));

}

putchar(‘\n’);

}

else

{ scanf(“%d”, len);

for (i = 0; i len; i ++)

{ scanf(“%ld”, curr);

curr = decode(curr);

a1 = curr / 100;

a2 = curr % 100;

printf(“decoded: “);

if (a1 != 0) putchar(antichange[a1]);

if (a2 != 0) putchar(antichange[a2]);

}

putchar(‘\n’);

}

putchar(‘\n’);

system(“PAUSE”);

return 0;

}

测试:

输入:

Y

FERMAT

输出:

encoded: 5192 – 2604 – 4222

输入

N

3 5192 2604 4222

输出

decoded: FERMAT

c语言密码的加密程序(c语言密码加密程序Today)

用c语言设计一个简单地加密算,解密算法,并说明其中的原理

可能很长 ,这是在我以前一个程序里摘出来的。

原理:用户输入创建密码,机器读取,并把每一位密码进行加密,这里就是把每一位的 ASCII码加一(也可以有其他的加密方式),然后保存在文件里。解密时从文件中读取保存的乱码,然后把它每一位的ascII码减一 在与你输入的密码比较,正确既可以进入。

#define CODE_SIZE 10

int password()

{

FILE *fp;

char s1[CODE_SIZE], s2[CODE_SIZE], s3[CODE_SIZE], fun;

while (1)

{

fp = fopen(“password.txt”, “r”);

if (fp == NULL)

{

printf(“第一次运行,请输入初始密码(最多8位):\n”);

scanf(“%s”, s1);

printf(“请再次输入初始密码:\n”);

scanf(“%s”, s2);

if (strcmp(s1, s2) == 0)

{

fp = fopen(“password.txt”, “w+”);

if (fp == NULL)

{

printf(“创建文件失败退出\n”);

getch();

exit(1);

}

else

{

//对s1加密

for (int i = 0; iCODE_SIZEs1[i] != ‘ ‘; i++)

{

s1[i] = s1[i] + i;

}

fputs(s1, fp);

printf(“初始密码创建完成.\n”);

}

}

else

{

printf(“两次输入的密码不一致!\n”);

}

fclose(fp);

}

else

{

fgets(s1, CODE_SIZE, fp);

fclose(fp);

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

scanf(“%s”, s2);

//对s1解密

for (int i = 0; iCODE_SIZEs1[i] != ‘ ‘; i++)

{

s1[i] = s1[i] – i;

}

loop:

if (strcmp(s1, s2) == 0)

{

printf(“—–密码正确—–\n”);

printf(“—–请选择功能—–\n”);

printf(“—–1:修改密码—–\n”);

printf(“—–2:进入通讯录—–\n”);

scanf(“%d”, fun);

switch (fun)

{

case 1: printf(“请输入新密码\n”);

scanf(“%s”, s1);

printf(“请再次输入新密码\n”);

scanf(“%s”, s2);

if (strcmp(s1, s2) == 0)

{

fp = fopen(“password.txt”, “w+”);

if (fp == NULL)

{

printf(“文件错误!\n”);

}

else

{ //对s1加密

for (int i = 0; iCODE_SIZEs1[i] != ‘ ‘; i++)

{

s1[i] = s1[i] + i;

}

fputs(s1, fp);

fclose(fp);

printf(“密码修改成功\n”);

}

}

else

{

printf(“两次输入的密码不一致,修改失败\n”);

}

break;

case 2: return 1;

default: printf(“无效指令\n”);

}

}

else

{

printf(“密码错误\n请重新输入\n”);

scanf(“%s”, s2);

goto loop;

}

}

printf(“——————\n\n\n\n”);

}

}

C语言字符串加密

问题不小,你表面用的是C

但是,好多地方不符合C的语法

,,比如:

for

(int

i=0;

str[i]

!=

‘\0’;

i++)

还有,就是你好像没有弄清楚

,你要做什么似的,有好多无用的东西,

就像你的函数里的,key

,虽然你提到key了,但是你根本没有使用key,你只是使用45来进行加密,,还有就是一个文件

的大小,是不确定的,你用一个100个字符的字符串来存,有点那个不安全了,,如果稍长一点就会出问题,产生运行时错误。其实你这个加密和解密是一个可逆过程,用一个函数,就可以了,具体你想要的也不是太明白,就给你弄了一个简单一点加密和解密程序

,输入输出不是同一个文件

,不知道是不是你想要的。

#include

#include

#include

void

Decrypt()

{

char

fname[FILENAME_MAX];

char

fname2[FILENAME_MAX];

FILE*

fp;

FILE*

fp1;

int

key;

char

c;

printf(“输入要加/解密文件的路径:\n”);

scanf(“%s”,

fname);

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

scanf(“%d”,key);

strcpy(fname2,fname);

strcat(fname2,”.txt”);

if(

(fp

=

fopen(fname,”r+”))

==

NULL)

{

printf(“error”);

exit(1);

}

if(

(fp1

=

fopen(fname2,”w+”))

==

NULL)

{

printf(“error”);

exit(1);

}

while(

(c

=

fgetc(fp))

!=

EOF)

{

c

=

c^key;

fputc(c,fp1);

}

fcloseall();

}

int

main()

{

Decrypt();

return

0;

}

如果想看一些好一点的加密算法

,我这里有一些,联系我发给你

,,

c语言字母加密?

按照你的要求编写的字母加密的C语言程序如下

(姓字母向后移两位,名字母向后移三位)

#includestdio.h

#includestring.h

int main(){

char src[30],result[]=””,ch[2]={‘\0’};

int i,j,len;

fgets(src,30,stdin);

len=strlen(src);

for(i=0;src[i]!=’ ‘;i++){

if(‘a’=src[i] src[i]=’z’){

ch[0]=(char)(((src[i]-‘a’)+2)%26+’a’);

strcat(result,ch);

}else if(‘A’=src[i] src[i]=’Z’){

ch[0]=(char)(((src[i]-‘A’)+2)%26+’A’);

strcat(result,ch);

}else{

ch[0]=src[i];

strcat(result,ch);

}

}

for(j=i;jlen;j++){

if(‘a’=src[j] src[j]=’z’){

ch[0]=(char)(((src[j]-‘a’)+3)%26+’a’);

strcat(result,ch);

}else if(‘A’=src[j] src[j]=’Z’){

ch[0]=(char)(((src[j]-‘A’)+3)%26+’A’);

strcat(result,ch);

}else{

ch[0]=src[j];

strcat(result,ch);

}

}

printf(“%s\n”,result);

return 0;

}

如何用C语言编程一数字加密程序?

楼上的不错,但如果你不会的话,可以用if语句;

输入原密码,用数组存储,再次输入时,从头按位比较,如果每一位数字都相同就可以通过

希望答案对你有帮助,如不满意可继续提问,若满意就提高一下悬赏金吧

如何用C语言对文件进行加密和解密?

对于加密要求不高的完全可以自己定义规则来进行加密。这种加密是很简单很自由的,例如你在存文件的时候可以将文件中的每个字符都加上一个数,然后读取该文件的时候再每个字符相应地减去那个数,即可实现就简单的加密,这样你储存的文件看上去就是乱码了。只是这个规则太简单,规则你可以自己定,加密与解密对着来就行了。

下面程序用异或操作对文件进行加密和解密

/****************** 设计思路 ******************/

// 根据用户输入的加密/机密密码,

// 每次都拿原文件和密码等长度的一个字符串和密码

// 对应元素异或进行加密/解密

// 另外因为是用异或方法,所以加密和解密就是同一个程序

// 即按照同样的加密即是对文件的解密

#include stdio.h

#include string.h

#include ctype.h

#include conio.h

#include stdlib.h

char filename[256]; // 原文件

char password[256]; // 加密/解密密码

const char filenametemp[] = “temp15435255435325432543.temp”; // 加密/解密中间文件

void inputpass(char *pass); //密码输入以”******”显示

void main() {

FILE *fp; // 加密/解密的文件

FILE *fptemp; // 加密/解密过程临时文件

int pwdlen; // 密码长度

int i = 0; // 计数器

char ch = 0; // 读入的字符

printf(“请输入要加密/解密的文件名(全路径名): \n”);

gets(filename);

if( (fp = fopen(filename, “rb”)) == NULL) {

printf(“找不到文件 %s\n”, filename);

exit(1);

} // if

printf(“请输入要加密/解密的密码: \n”);

inputpass(password);

pwdlen = strlen(password);

if(pwdlen == 0) {

printf(“密码不能为空,加密/解密失败\n”);

exit(1);

} // if

fptemp = fopen(filenametemp, “wb”); // 打开中间文件

while(1) {

ch = fgetc(fp);// 从原文件读入一个字符

if(feof(fp)) { // 已经读到文件尾

break; // 退出循环

}

ch ^= password[i++]; // 对原字符和密码进行异或操作

fputc(ch, fptemp); // 将异或结果写入中间文件

if(i == pwdlen) { // 使得原文件每和密码长度相同的固定长度异或加密

i = 0;

}

} // while

fclose(fp); // 关闭打开原文件

fclose(fptemp); // 关闭打开中间文件

remove(filename); // 删除原文件

rename(filenametemp, filename); // 将中间文件重命名为原文件

printf(“加密/解密成功\n”); // 至此加密/解密成功

}

// 密码输入以”******”显示

void inputpass(char *pass) {

int i = 0;

char c;

while(isprint(c = getch())) {

pass[i++] = c;

// printf(“*”);

}

pass[i] = ‘\0’;

printf(“\n”);

}

关于c语言密码的加密程序和c语言密码加密程序Today的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月2日 23:43:29
下一篇 2024年4月2日 23:49:43

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    4100
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5800
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4500
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4500
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7500
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6500
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4700
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    5000
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3500
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4500

发表回复

登录后才能评论



关注微信