文章目录
一、源码二、结果三、凯撒密码之源码四、结果
一、源码
#include <stdio.h>
#include <string.h>
int main(int argc
, char const *argv
[])
{
int count
= 0;
int result
= 1;
int i
;
char Text
[128] = {'\0'};
char crytograph
[128] = {'\0'};
while (1)
{
if (result
== 1)
{
printf("请输入要加密的明文:");
scanf("%s", &Text
);
count
= strlen(Text
);
for (i
= 0; i
< count
; i
++)
{
crytograph
[i
] = Text
[i
] + i
+ 5;
}
crytograph
[i
] = '\0';
printf("加密后的密文是:%s\n", crytograph
);
}
else if (result
== 2)
{
count
= strlen(Text
);
for (i
= 0; i
< count
; i
++)
{
Text
[i
] = crytograph
[i
] - i
- 5;
}
Text
[i
] = '\0';
printf("解密后的明文是:%s\n", Text
);
}
else if (result
== 3)
{
break;
}
else
{
printf("请输入命令符:");
}
printf("输入1加密新的明文,输入2对刚加密的密文进行解密,输入3退出系统:\n");
printf("请输入命令符:\n");
scanf("%d", &result
);
}
return 0;
}
二、结果
三、凯撒密码之源码
#include <stdio.h>
void CaesarEncrypt(char *pstrBff
, int nKey
)
{
int count
;
for (count
= 0; pstrBff
[count
] != '\0'; count
++)
{
if ((pstrBff
[count
] >= 'A' && pstrBff
[count
] <= 'Z') || (pstrBff
[count
] >= 'a' && pstrBff
[count
] <= 'z'))
{
pstrBff
[count
] += nKey
;
if (pstrBff
[count
] > 'Z' && pstrBff
[count
] < 'a')
pstrBff
[count
] -= 26;
else if (pstrBff
[count
] > 'z')
pstrBff
[count
] -= 26;
}
}
}
void CaesarDecrypt(char *pstrBff
, int nKey
)
{
int count
;
for (count
= 0; pstrBff
[count
] != '\0'; count
++)
{
if ((pstrBff
[count
] >= 'A' && pstrBff
[count
] <= 'Z') || (pstrBff
[count
] >= 'a' && pstrBff
[count
] <= 'z'))
{
pstrBff
[count
] -= nKey
;
if (pstrBff
[count
] < 'A')
pstrBff
[count
] += 26;
else if (pstrBff
[count
] > 'Z' && pstrBff
[count
] < 'a')
pstrBff
[count
] += 26;
}
}
}
int main(void)
{
char strBff
[100];
int bExit
= 0;
unsigned int nSel
, nKey
= 0;
printf("“1”加密新的明文,输入:“2”对刚加密的密文进行解密,输入:“3”退出");
while (!bExit
)
{
printf("\n**************************\n");
printf("请输入指令:");
scanf("%d", &nSel
);
while (getchar() != '\n')
;
switch (nSel
)
{
case 1:
printf("请输入要加密的明文:");
gets(strBff
);
printf("请输入偏移量:");
scanf("%d", &nKey
);
while (getchar() != '\n')
;
CaesarEncrypt(strBff
, nKey
);
printf("加密后的密文是: %s\n", strBff
);
break;
case 2:
printf("请输入需要解密的明文:");
gets(strBff
);
printf("请输入偏移量:");
scanf("%d", &nKey
);
while (getchar() != '\n')
;
CaesarDecrypt(strBff
, nKey
);
printf("解码后的明文:%s\n", strBff
);
break;
case 3:
return 1;
default:
printf(".\n");
}
}
return 0;
}
四、结果
转载请注明原文地址: https://yun.8miu.com/read-113067.html