凯撒密码算法
更新时间:2023-09-03 16:36:01 阅读量: 教育文库 文档下载
网络安全:凯撒密码算法
移位法:
#include <stdio.h>
#include <stdlib.h>
char *Encrypt(char *pwd,int key) //加密
{
for(int i=0;*(pwd+i)!='\0';i++)
{
if(*(pwd+i)>='a'&&*(pwd+i)<='z')
*(pwd+i)=(*(pwd+i)-'a'+key)%26+'a';
else if(*(pwd+i)>='A'&&*(pwd+i)<='Z')
*(pwd+i)=(*(pwd+i)-'A'+key)%26+'A';
}
return pwd;
}
char *Decrypt(char *pwd,int key) //解密
{
for(int i=0;*(pwd+i)!='\0';i++)
{
if(*(pwd+i)>='a'&&*(pwd+i)<='z')
{
if(*(pwd+i)-'a'>=key%26)
*(pwd+i)=*(pwd+i)-key%26;
else *(pwd+i)='z'-(key%26-(*(pwd+i)-'a'))-1;
}
else if(*(pwd+i)>='A'&&*(pwd+i)<='Z')
{
if(*(pwd+i)-'A'>=key%26)
*(pwd+i)=*(pwd+i)-key%26;
else *(pwd+i)='Z'-(key%26-(*(pwd+i)-'A'))-1;
}
}
return pwd;
}
void main()
{
char *pwd;
int key;
pwd=(char*)malloc(sizeof(char));
printf("Input your password:");
gets(pwd);
printf("Input a key:");
scanf("%d",&key);
printf("The Ciphertext is:");
printf("%s\n",Encrypt(pwd,key));
}
------------------------------------------------------------------
替换法:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void table(char *keyword) //筛选密钥(去重复去空格)
{
int i,j,k;
for(i=0;*(keyword+i)!='\0';i++)
{
for(j=i;*(keyword+j)!='\0';j++)
{
if(i!=j)
if(*(keyword+i)==*(keyword+j)||*(keyword+j)==' ')
{
for(k=j;*(keyword+k)!='\0';k++)
*(keyword+k)=*(keyword+k+1);
j--;
}
}
}
}
void newTab(char *keyword) //生成密钥表
{
char ch;
int i;
int t;
for(t=0;*(keyword+t)!='\0';t++);
for(ch='a';ch<='z';ch++)
{
for(i=0;*(keyword+i)!=ch;i++)
{
if(*(keyword+i)=='\0')
{
*(keyword+t)=ch;
t++;
break;
}
}
}
*(keyword+t)='\0';
}
char *Ciphertext(char *keyword,char *Plaintext) //按密码表加密
{
char ch;
int i,j;
for(i=0;*(Plaintext+i)!='\0';i++)
{
for(ch='a',j=0;ch<='z';ch++,j++)
{
if(*(Plaintext+i)==ch)
{
*(Plaintext+i)=*(keyword+j);
break;
}
}
}
return Plaintext;
}
char *Decrypt(char *keyword,char *Plaintext) //解密
{
char ch;
int i,j;
for(i=0;*(Plaintext+i)!='\0';i++)
{
for(ch='a',j=0;*(keyword+j)!='\0';ch++,j++)
{
if(*(Plaintext+i)==*(keyword+j))
{
*(Plaintext+i)=ch;
break;
}
}
}
return Plaintext;
}
void main()
{
char *keyword,*Plaintext,*tmp=NULL;
keyword=(char*)malloc(sizeof(char));
Plaintext=(char*)malloc(sizeof(char));
printf("Input key word:"); //输入欲用密钥
gets(keyword);
printf("Input Plaintext:"); //输入要转换的明文
gets(Plaintext);
table(keyword); //去空格去重复
newTab(keyword); //生成密码表
tmp=Ciphertext(keyword,Plaintext); //对应着密码表生成密文
puts(tmp); //输出密文
puts(Decrypt(keyword,tmp));
//解密输出
}
3.
printf("您所需要加密的明文为:");
for(i=0;i<5000;i++)
{
if(in[i]!='\0')
{
printf("%c",in[i]);
网络安全:凯撒密码算法
}
else
{
break;
}
}
printf("\n");
printf("加密后的密文为:");
for(i=0;i<5000;i++)
{
if(in[i]!='\0')
{
printf("%c",out[i]);
}
else
{
break;
}
}
printf("\n");
}
//解密函数
void jiemi()
{
int i,c;
printf("请输入要解密的密文:");
getchar(ch);
gets(in);
for(i=0;i<5000;i++)
{
c=i/6;
out[jiemibox[i%6]+c*6-1]=in[i];
}
printf("您所需要解密的密文为:");
for(i=0;i<5000;i++)
{
if(in[i]!='\0')
{
printf("%c",in[i]);
}
else
{
break;
}
}
printf("\n");
printf("解密后的明文为:");
for(i=0;i<5000;i++)
{
if(in[i]!='\0')
{
printf("%c",out[i]);
}
else
{
break;
}
}
printf("\n");
}
//主函数
void main()
{
int choose;
list:
printf("*******************************欢迎使用置换密码功能*****************************");
printf("请选择需要进行的操作种类:\n");
printf("1、加密\n");
printf("2、解密\n");
printf("3、退出\n");
scanf("%d",&choose);
if(choose==1)
{
jiami();
goto list;
}
else if(choose==2)
{
jiemi();
goto list;
}
else if(choose==3)
{
exit(1);
}
else
{
printf("您输入的序号不正确,请重新输入:\n");
goto list;
}
}
正在阅读:
凯撒密码算法09-03
学生简历08-24
原材料采购管理方案及食品保存管理方案05-08
办公楼结构工程计算书(1)05-03
《中国档案分类法》适用性试探08-11
努力奋斗02-18
物流企业实习报告07-24
fp01free pascal教程12-08
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 凯撒
- 算法
- 密码
- 鲁建标字19号文费用项目组成及计算规则
- 2011年房地产上市公司发展战略与经营策略比较研究
- 大学画法几何8相贯体
- 数据库期末考试试题(附答案)
- 公司工作进度跟踪表
- 中国系统备份行业市场前景分析预测年度报告(目录)
- 超星尔雅大学生职业生涯规划参考与答案
- 小学交通安全责任书
- 中国农产品期货市场发展态势与发展策略分析报告(2013-2017)
- 2009 Medical Imaging Guide
- 部编人教本五年级语文上册第一单元词语意思归纳汇总
- 以下符合C语言语法的实型常量是( )。 A.1.2E0.5B.3.14
- 七年级生物上册5-1光合作用第1课时练习新版北师大版
- 工程施工单位项目物资管理制度
- 笔迹心理分析简介
- 梅毒感染孕产妇及所生儿童治疗方案
- 自制电动机教程
- 2016-2021年中国GPS行业发展预测与投资战略规划分析报告(目录)
- 2018-2023年中国铝电解电容器行业市场发展预测及投资咨询报告(目录)
- 【飞越培训】2011年第九届希望杯小学六年级组初赛试题