问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C或是C++实现明文到密文的转换

发布网友 发布时间:2022-04-29 17:27

我来回答

2个回答

热心网友 时间:2023-10-23 15:54

给,已经在VC上编译运行确认了:
#include<conio.h>
#include<stdio.h>

#define N 20 //暂定密钥词最长为20个字符
#define M 100 //暂定输入明文最长为100个字符

void main()
{
int key[N]={NULL},keylength=0;
int beforeStr[M]={NULL},strlength=0;
int afterStr[M]={NULL};
int i,j;
char ch;

printf("请输入密钥单词: ");
while((ch=getchar())!='\n') key[keylength++]=ch-'a';

printf("请输入明文: ");
while((ch=getchar())!='\n')
{
if(ch>='a'&&ch<='z')
beforeStr[strlength++]=ch-'a';
else beforeStr[strlength++]=ch-'\0';
}

for(i=0,j=0;i<strlength;i++)
{
if(beforeStr[i]>=0&&beforeStr[i]<=25)
{
afterStr[i]=(beforeStr[i]+key[j%keylength])%26;
j++;
}
else afterStr[i]=beforeStr[i];
}

printf("加密后为: ");
for(i=0;i<strlength;i++)
{
if(afterStr[i]>=0&&afterStr[i]<=25) printf("%c",afterStr[i]+'a');
else printf("%c",afterStr[i]+'\0');
}

getch();
}

热心网友 时间:2023-10-23 15:54

从cipher对应2,8,15,7,4,17看出
a~z对应0~25

'a' - 'a' = 0
...
'z' - 'a' =25

------------------------------------------------

char str[] = "meet me after party";
char key[] = "cipher";

int len_str = strlen(str);
int len_key = strlen(key);

int i,j;

// 1)首先把明文字母转换为对应的数字。
for(i=0; i<len_str; i++)
{
str[i] -= 'a';
}

// 2)把密钥字母转换为对应的数字
for(i=0; i<len_key; i++)
{
key[i] -= 'a';
}

// 3)明文数字与密钥数字相加,如果相加的结果大于26,那么将该结果减26
j = 0;
for(i=0; i<len_str; i++)
{
if(j==len_key) j=0;
str[i] += key[j];
if(str[i]>26) str[i] -= 26;
j++;
}

// 4)转换成字符
for(i=0; i<len_str; i++)
{
str[i] += 'a';
}

热心网友 时间:2023-10-23 15:54

给,已经在VC上编译运行确认了:
#include<conio.h>
#include<stdio.h>

#define N 20 //暂定密钥词最长为20个字符
#define M 100 //暂定输入明文最长为100个字符

void main()
{
int key[N]={NULL},keylength=0;
int beforeStr[M]={NULL},strlength=0;
int afterStr[M]={NULL};
int i,j;
char ch;

printf("请输入密钥单词: ");
while((ch=getchar())!='\n') key[keylength++]=ch-'a';

printf("请输入明文: ");
while((ch=getchar())!='\n')
{
if(ch>='a'&&ch<='z')
beforeStr[strlength++]=ch-'a';
else beforeStr[strlength++]=ch-'\0';
}

for(i=0,j=0;i<strlength;i++)
{
if(beforeStr[i]>=0&&beforeStr[i]<=25)
{
afterStr[i]=(beforeStr[i]+key[j%keylength])%26;
j++;
}
else afterStr[i]=beforeStr[i];
}

printf("加密后为: ");
for(i=0;i<strlength;i++)
{
if(afterStr[i]>=0&&afterStr[i]<=25) printf("%c",afterStr[i]+'a');
else printf("%c",afterStr[i]+'\0');
}

getch();
}

热心网友 时间:2023-10-23 15:54

从cipher对应2,8,15,7,4,17看出
a~z对应0~25

'a' - 'a' = 0
...
'z' - 'a' =25

------------------------------------------------

char str[] = "meet me after party";
char key[] = "cipher";

int len_str = strlen(str);
int len_key = strlen(key);

int i,j;

// 1)首先把明文字母转换为对应的数字。
for(i=0; i<len_str; i++)
{
str[i] -= 'a';
}

// 2)把密钥字母转换为对应的数字
for(i=0; i<len_key; i++)
{
key[i] -= 'a';
}

// 3)明文数字与密钥数字相加,如果相加的结果大于26,那么将该结果减26
j = 0;
for(i=0; i<len_str; i++)
{
if(j==len_key) j=0;
str[i] += key[j];
if(str[i]>26) str[i] -= 26;
j++;
}

// 4)转换成字符
for(i=0; i<len_str; i++)
{
str[i] += 'a';
}

热心网友 时间:2023-10-23 15:54

给,已经在VC上编译运行确认了:
#include<conio.h>
#include<stdio.h>

#define N 20 //暂定密钥词最长为20个字符
#define M 100 //暂定输入明文最长为100个字符

void main()
{
int key[N]={NULL},keylength=0;
int beforeStr[M]={NULL},strlength=0;
int afterStr[M]={NULL};
int i,j;
char ch;

printf("请输入密钥单词: ");
while((ch=getchar())!='\n') key[keylength++]=ch-'a';

printf("请输入明文: ");
while((ch=getchar())!='\n')
{
if(ch>='a'&&ch<='z')
beforeStr[strlength++]=ch-'a';
else beforeStr[strlength++]=ch-'\0';
}

for(i=0,j=0;i<strlength;i++)
{
if(beforeStr[i]>=0&&beforeStr[i]<=25)
{
afterStr[i]=(beforeStr[i]+key[j%keylength])%26;
j++;
}
else afterStr[i]=beforeStr[i];
}

printf("加密后为: ");
for(i=0;i<strlength;i++)
{
if(afterStr[i]>=0&&afterStr[i]<=25) printf("%c",afterStr[i]+'a');
else printf("%c",afterStr[i]+'\0');
}

getch();
}

热心网友 时间:2023-10-23 15:54

从cipher对应2,8,15,7,4,17看出
a~z对应0~25

'a' - 'a' = 0
...
'z' - 'a' =25

------------------------------------------------

char str[] = "meet me after party";
char key[] = "cipher";

int len_str = strlen(str);
int len_key = strlen(key);

int i,j;

// 1)首先把明文字母转换为对应的数字。
for(i=0; i<len_str; i++)
{
str[i] -= 'a';
}

// 2)把密钥字母转换为对应的数字
for(i=0; i<len_key; i++)
{
key[i] -= 'a';
}

// 3)明文数字与密钥数字相加,如果相加的结果大于26,那么将该结果减26
j = 0;
for(i=0; i<len_str; i++)
{
if(j==len_key) j=0;
str[i] += key[j];
if(str[i]>26) str[i] -= 26;
j++;
}

// 4)转换成字符
for(i=0; i<len_str; i++)
{
str[i] += 'a';
}

热心网友 时间:2023-10-23 15:54

给,已经在VC上编译运行确认了:
#include<conio.h>
#include<stdio.h>

#define N 20 //暂定密钥词最长为20个字符
#define M 100 //暂定输入明文最长为100个字符

void main()
{
int key[N]={NULL},keylength=0;
int beforeStr[M]={NULL},strlength=0;
int afterStr[M]={NULL};
int i,j;
char ch;

printf("请输入密钥单词: ");
while((ch=getchar())!='\n') key[keylength++]=ch-'a';

printf("请输入明文: ");
while((ch=getchar())!='\n')
{
if(ch>='a'&&ch<='z')
beforeStr[strlength++]=ch-'a';
else beforeStr[strlength++]=ch-'\0';
}

for(i=0,j=0;i<strlength;i++)
{
if(beforeStr[i]>=0&&beforeStr[i]<=25)
{
afterStr[i]=(beforeStr[i]+key[j%keylength])%26;
j++;
}
else afterStr[i]=beforeStr[i];
}

printf("加密后为: ");
for(i=0;i<strlength;i++)
{
if(afterStr[i]>=0&&afterStr[i]<=25) printf("%c",afterStr[i]+'a');
else printf("%c",afterStr[i]+'\0');
}

getch();
}

热心网友 时间:2023-10-23 15:54

从cipher对应2,8,15,7,4,17看出
a~z对应0~25

'a' - 'a' = 0
...
'z' - 'a' =25

------------------------------------------------

char str[] = "meet me after party";
char key[] = "cipher";

int len_str = strlen(str);
int len_key = strlen(key);

int i,j;

// 1)首先把明文字母转换为对应的数字。
for(i=0; i<len_str; i++)
{
str[i] -= 'a';
}

// 2)把密钥字母转换为对应的数字
for(i=0; i<len_key; i++)
{
key[i] -= 'a';
}

// 3)明文数字与密钥数字相加,如果相加的结果大于26,那么将该结果减26
j = 0;
for(i=0; i<len_str; i++)
{
if(j==len_key) j=0;
str[i] += key[j];
if(str[i]>26) str[i] -= 26;
j++;
}

// 4)转换成字符
for(i=0; i<len_str; i++)
{
str[i] += 'a';
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
陌陌发语音出现转码失败怎么办 女孩2010年5月10号阴历3月27早晨9点55分出生的五行缺什么 钟姓男孩名字2023年5月10日出生的 凤眼果有什么营养?凤眼果的这些营养你都知道吗? 专升本成绩多少合格 山东专升本成绩多少合格 山东2022年专升本成绩什么时候出 2024专升本成绩公布时间及入口 2023年山东专升本各专业录取分数线 什么时候出专升本成绩 山东专升本综合素质测评成绩怎么算 做教育行业工作手机的企业有哪些?帮忙推荐点。 android开发怎么把明文转换为密文 如何编写一个程序把明文转换成密文? 为什么企业需要配备员工手机? 明文与密文的转换 国企公司员工大部分用什么牌子手机 linux系统 运行什么软件,多吗?? 如何学习sqlite源码? 微信别人发信息我收不到怎么回事 别人给我微信发消息我却没得显示,但她的对话框显示她发了消息的,但我... 用手机短信删淘宝差评可以么 12306退订火车票吗 如何退订火车票 9个月的宝宝屁股很红是怎么回事 不到两个月的宝宝屁股红红的怎么办? 白色车打蜡之后必须要抛光吗 新生儿屁股红怎么办宝宝出生十几天,屁股老是红红的 汽车抛光前需要用砂纸打磨吗? 汽车抛光打蜡之前和抛光打蜡之后的区别在哪。能上明显的图肯定最佳 汽车在什么状况下需要打蜡?抛光? C#语言,一个简单的ACSII码转换程序、将明文转化为密文,将密文转化明文。 加入84消毒液的清水为什么会变黄? : 编程实现一个加密程序:输入明文后通过加密程序转换成密文并输出 什么行业适合企业工作手机?感觉这个对私域流量构建很有帮助啊 水中加入84消毒液后水质变淡黄并产生黄色沉淀,这是什么原因? URL地址中的密文怎么转换成明文? 请问地下水中什么物质和84消毒液产生化学反应后 水会变成土黄色 公司制度新规定,上班期间手机要上交,这算是侵犯人权吗? 密文和明文怎样转换 为什么企业要用工作手机? 关于超级加解密工具中的密文和明文翻译靠谱吗? 水滴毛外套洗的时候放了84消毒液后颜色变黄色了怎么办? 汇编语言编写程序将字符串的明文转换为密文存放并显示密文,密文形成 方法是输入的字母用后4个字母替换 一段明文如何加密为密文 电脑输密钥,输入任何字母后面就多出来一个横杠输不了 自家地下水中加入84消毒液后水变成黄色怎么回事 为了确保信息安全,信息需要加密传输发送方由明文转至密文(密文),接收方由密文转至明文(解密),已知 明文 密文 加密 解密 我用的电脑360免费wifi,为什么一部手机能连,另一部不行 什么是密文?什么是明文?