移位密码算法-c语言,凯瑟移位密码(C语言).doc
凯瑟移位密码(C语言)
恺撒移位密码问题描述:
“恺撒密码”据传是古罗马恺撒大帝用来保护重要军情的加密系统。它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。
恺撒移位, 因此,。
如:
明文 F O R E S T
密文 Y H K X L M
请根据恺撒密码的思路设计一个恺撒加解密码软件,其中移位数可以根据用户需要在每一次的加密与解密中进行修改。
由于移位加密对于单个重复的字符很容易被破译,如下对照表所示:
明文 F R E E T O O
密文 Y K X X M H H
由于重复的字符很容易被破译出所加密的内容,请为恺撒加解密码软件解决单个重复的字符问题。
(要求利用单向循环链表存储结构开发加解密软件。)
答案:
C语言实现
#include
main()
{
char M[100];
char C[100];
int K=3,i;
printf("请输入明文M(不可输入空白串)\n");
gets(M);
for(i=0;M[i]!='\0';i++)
C[i]=(M[i]-'a'+K)%26+'a';
C[i]='\0';
printf("加密密码是:\n%s\n",C);
}
验证如下:
输入:a; 输出:d
下面两图同样验证上述算法
约瑟夫问题描述:
编号为1,2,……,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数。
方法1.报m的人出列(将其删除),从他在顺时针方向上的下一个人开始重新从一报数,……,如此下去,直到所有人全部出列为止。试设计一个程序求出出列顺序。要求利用单向循环链表存储结构模拟此过程,按照出列的顺序打印出各人的编号和此人密码。
方法2. 报m的人出列(将其删除),将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从一报数,……,如此下去,直到所有人全部出列为止。试设计一个程序求出出列顺序。要求利用单向循环链表存储结构模拟此过程,按照出列的顺序打印出各人的编号和此人密码。
#include
#include "stdlib.h "
struct ele{
int no;
struct ele *link;
}
main() {
struct ele *h,*u,*p;
int n,m,i;
printf( "Please input n&m:\n ");
scanf( "%d%d ",&n,&m);/*输入n和m*/
h=u=(struct ele *)malloc(sizeof(struct ele));/*形成首表元*/
h-> no=1;
for(i=2;i <=n;i++)/*形成其余的n-1个表元*/
{
u-> link=(struct ele *)malloc(sizeof(struct ele));
u=u-> link;
u-> no=i;/*第i个表元置编号i*/
}
u-> link=h;/*末表元后继首表元,形成环*/
puts( "\nThe numbers of who will quit the cycle in turn are: ");
while(n)
{
for(i=1;i
u=u-> link;
p=u-> link;/*p指向第m个表元*/
u-> link=p-> link;/*第m个表元从环中脱钩*/
printf( "%4d ",p-> no);
free(p);/*释放第m个表元占用的空间*/
n--;
}
printf( "\n\n Press any key to quit...\n ");
getchar();
}
移位密码算法-c语言,凯瑟移位密码(C语言).doc相关推荐
- C语言时间动态密码算法,GMT 0021-2012 动态口令密码应用技术规范.pdf
ICs35.040 L80 备 案 号 :38319-⒛ 13 中 华 人 民 共 和 国 密 码 行 业 标 准 Gˇ Ι -2012 /T002⒈ 乏 动态 口令密码应用 技术规范 one tiI ...
- 古典密码算法实验c语言,古典密码实验报告.doc
古典密码实验报告.doc 哈尔滨工程大学实验报告实验名称古典密码算法班级学号姓名实验时间2014年4月成绩指导教师实验室名称哈尔滨工程大学实验室与资产管理处制一.实验名称古典密码算法2.实验目的通过编 ...
- 安全密码c语言编程,商用密码算法原理与C语言实现
2020年1月1日,<中华人民共和国密码法>正式施行.国家鼓励和支持密码科学技术研究与应用,促进密码科学技术进步与创新,加强密码人才培养和队伍建设,采取多种形式加强密码安全教育.本书是在国 ...
- 周期置换加密算法用c语言实现,古典密码实验报告.doc
. .. 哈尔滨工程大学 实 验 报 告 实 验 名 称: 古典密码算法 班 级: 学 号: 姓 名: 实 验 时 间: 2014年4月 成 绩: 指 导 教 师: 实验室名称: 哈尔滨工程大学实验室 ...
- 信息安全——维吉尼亚密码算法(C++实现)
信息安全导论课程学习的实验一,维吉尼亚密码算法C++的实现. 维吉尼亚密码算法是一种代换密码算法,直观上来说,密钥一般短于明文长度,因此加密时需要将明文根据密钥长度进行分组,每一组明文根据密钥对应(0 ...
- 杨元原博士国密课堂 · 第二期 | 商用密码应用安全性评估:Part2. 商用密码算法
#国密课堂# 第二期 商用密码应用 安全性评估 Part 2. 商用密码算法 在第一期国密课堂 中,杨博士带大家简单了解了密码算法的概念.第二期杨博士带我们继续走近商用密码应用安全性评估领域,进一 ...
- CTF-Crypto学习1(软件加壳、反汇编、Babe64、Rijndael密码算法)
CTF-Crypto学习1(软件加壳.反汇编.Babe64.Rijndael密码算法) 1.软件加壳 定义: 加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行. 加壳的另一种常用的方式是在 ...
- 动态密码算法介绍与实现
动态密码,亦称一次性密码(One Time Password, 简称 OTP),是一种高效简单又比较安全的密码生成算法,在我们的生活以及工作中随处可见,身为开发者,也或多或少在自己的业务系统中集成了二 ...
- 动态密码算法介绍与实现 1
动态密码,亦称一次性密码(One Time Password, 简称 OTP),是一种高效简单又比较安全的密码生成算法,在我们的生活以及工作中随处可见,身为开发者,也或多或少在自己的业务系统中集成了二 ...
- ISO/IEC国际标准组织收入的国产密码算法汇总
我国SM2和SM9数字签名算法正式成为ISO/IEC国际标准 发布日期:2017-11-17来源:国家密码管理局 11月3日,在第55次ISO/IEC联合技术委员会信息安全技术分委员会(SC27)德国 ...
最新文章
- 如何从Docker容器内部连接到计算机的本地主机?
- Kali Linux安装VMware Tools
- 个人副业在家可做大学生首选小程序创业项目
- python制作音乐模块_用Python打造一个只属于你的专属音乐播放器,享受动手的快乐!...
- PHP session有效期session.gc_maxlifetime
- 在Eigrp做不等值路由的负载均衡
- 移动端 uniapp 国际化一站式解决方案
- Ansible之playbook的使用总结 - 运维笔记
- java开发是什么_java开发到底是做什么的
- 设置页面包含子页面iframe用法
- median filter
- 【iOS-Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!【2011年11月15日更新】
- springboot框架
- android模拟器设置静态ip,静态IP地址版EVE模拟器部署和使用说明
- 华为防火墙区域和地址规划:
- Java基础知识笔记-11_2-Swing用户界面组件
- AFNetworking 之加载网络图片
- 利达主机联网接线端子_利达消防设备接线图
- 中职计算机高考试题卷,中职高中高考计算机试卷试题及含答案.doc
- jzoj3208. 【JSOI2013】编程作业(kmp)