C语言设计一个用简单的加密程序,即用字母替换的方式加密,程序运行中发现问题,求解释。

C语言设计一个用简单的加密程序,即用字母替换的方式加密,程序运行中发现问题,求解释。,第1张

原因就是char是1个字节的,你不能超过127(hi,楼上的,不是128哦,是-128~127不要误人子弟),你到后面的vwxyz已经溢出,所以是乱码。

我的解决方法就很简单,就是换成unsigned char 数组,这样取值范围增大到(0~255)就可以了,既简单又不破坏原有的结构

还有

else if(str[i]<'a')

{

str[i]+=26;

}

这句话是废话,可以删掉

我修改过的版本

#include <stdioh>

#include <stringh>

#include <ctypeh>

void EncodeString(unsigned char str,int key)

{

int length,i;//length为传入字符串长度,i用作循环计数器

length=strlen(str);

for(i=0;i<length;i++)//对字符串中的每个字符依次进行加密

{

if(isupper(str[i]))//对大写字母加密

{

str[i]+=key%26;

if(str[i]>'Z')

{

str[i]-=26;

}

}

else if(islower(str[i]))//对小写字母加密

{

str[i]+=key%26;

if(str[i]>'z')

{

str[i]-=26;

}

}

}

}

void main()

{

unsigned char arr[50],buffer;//arr[50]用来接收字符串信息,buffer用来接收缓冲区中的回车

int key;//key为加密秘钥

printf("This program encodes messages using a cyclic cipher\n");

printf("To stop, enter 0 as the key\n");

while(1)//程序一直运行,直到输入密钥0为止

{

printf("Enter the key: ");

scanf("%d",&key);

scanf("%c",&buffer);

if(0==key)

{

break;//输入密钥为0,则退出程序

}

printf("Enter a message: ");

scanf("%s",arr);

scanf("%c",&buffer);

EncodeString(arr,key);

printf("Encoded message: %s\n",arr);

}

}

加密和解密算法是程序编制中的重要一环。试想,如果我们平时使用的腾讯QQ、支付宝支付密码、今日头条账号密码那么轻易就被别人**的话,很多不可以预料的事情就会发生!

在现实生活中,我们遇到过太多QQ密码被**的情况,有的朋友QQ被盗之后,骗子利用朋友间信任骗取钱财的事情屡见不鲜。支付宝也曾出现过支付宝账户被恶意**的事件,对用户利益造成了严重损害!这些在技术上都指向了同一相关问题:软件加密算法的强壮程度。今天,小编利用C语言来简单实现一种加密方法。下面是源代码。

需要说明:程序利用了ascii码值的按照一定规律变换实现加密,对于解密过程,则是加密的逆过程。下面是程序的运行结果。

4190阅读

搜索

编程免费课程300节

初学编程100个代码

java自学一般要学多久

5秒破解excel密码

python必背100源代码

40岁零基础学编程

/

输入1个四位数,将其加密后输出。

方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。

例:括号内是说明

输入

1257

输出

The encrypted number is 4621(每一位上的数字加9除以10取余后,得0146,交换后得到4601)

/

#include <stdioh>

int main( )

{

int number, digit1, digit2, digit3, digit4, newnum;

scanf("%d", &number);

digit1 = number/1000;

digit2 = (number - 1000 digit1)/100;

digit3 = (number - 1000 digit1 - 100 digit2)/10;

digit4 = number - 1000 digit1 - 100 digit2 - 10 digit3;

digit1 += 9;

digit1 %= 10;

digit2 += 9;

digit2 %= 10;

digit3 += 9;

digit3 %= 10;

digit4 += 9;

digit4 %= 10;

//第三位数是1的情况不做考虑

newnum = digit3 1000 + digit4 100 + digit1 10 +digit2;

printf("The encrypted number is %d\n", newnum);

return 0;

}

#include<stdioh>

#include<stdlibh>

main()

{

int key;

char ch;

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

scanf("%d",&key);

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

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

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

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

}

输入输出如下:

请输入密钥:20addse

得到对应明文如下:uxxy

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

按回车键结束,就会得到结果 如:uxxy

下面是另一组输入输出:

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

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

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

以上就是关于C语言设计一个用简单的加密程序,即用字母替换的方式加密,程序运行中发现问题,求解释。全部的内容,包括:C语言设计一个用简单的加密程序,即用字母替换的方式加密,程序运行中发现问题,求解释。、c语言编写的程序,在输入密码时,如何加密、C语言数字加密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9493585.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存