古典密码实验

设计并实现“恺撒密码”。

  • 前言
  • 一、恺撒密码是什么?
  • 二、简单英文字母凯撒密码
    • 1.引入库
    • 2.读入数据
    • 3.加密
  • 总结

N=3、7时,加密并恢复一段文字,例如“Peace and Love”。
1.(不)区分大小写,但能识别空格、标点;
2.不调用现有库、函数,自己编程实现。


前言

例如:随着人工智能的不断发展,网络安全这门技术也越来越重要,很多人都开启了密码学学习以及网络安全学习,本文就介绍了古典密码之一的凯撒密码的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、恺撒密码是什么?

恺撒密码是古罗马时代经常使用的一种经典加密算法,伴随着恺撒的南征北战而流传于世。恺撒密码的基本原理是将明文字符串中的每一位字母往后(或往前)移N位,N即是对明文进行加密的密钥;移位之后的结果是一串无明显语义信息的字符串,即密文;解密过程是将密文中的每一位字母往前(或往后)移N位。
最简单的明文是一串英文字母,不区分大小写、无空格和其它标点符号。加密这种明文的第一步是将字母与数字一一对应,例如a对应数字0、b对应数字1、…、z对应数字25;然后,将明文中每一位字母所对应的数字增加(或减少)N后取模,例如,假设N=3,对明文中字母b的加密结果是:1+3 mod 26 =4,对字母z的加密结果是:25+3 mod 26=2。
稍复杂一点的明文除了包括英文字线,可能还包括空格、标点,简单的处理方式是将空格、标点作为特殊明文,例如,设标点符号对应数字26,逗号对应数字27,句号对应数字28;如果作了上述设定,则模数26也要相应增加。更通用的方法是使用ASCII对照表,可将所有的大小写字母、各种标点、符号都转换成相应的数字。

二、简单英文字母凯撒密码

1.引入库

代码如下(示例):

#include <stdio.h>

2.读入数据

代码如下(示例):

void menu(int a)
{int i;char c[26], ch;int n;if (a == 1){printf("\n输入n值:\n");scanf("%d", &n);ch = getchar();printf("\n输入原始字符串:");gets(c);fun1(c, n);printf("\n转换后:");puts(c);printf("\n");}else if (a == 2){printf("\n输入n值:\n");scanf("%d", &n);ch = getchar();printf("\n输入需解密的字符串:");gets(c);fun2(c, n);printf("\n解密后:");puts(c);printf("\n");}elseprintf("输入有误");
}int main()
{int n;printf("\n加密输入1,解密输入2\n");scanf("%d", &n);if (n != (int)n){printf("输入错误");}elsemenu(n);return 0;
}

3.加密

代码如下(示例):

void fun(char str[], int n) //加密
{//使用两个数组分别存放大小写字符char min[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};char max[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};int a[26];int i,j,k,b,c;i = 0;j = 0;for(i = 0; str[i] != '\0'; i++){//小写字母if('a'<=str[i] && str[i]<='z'){for(j = 0;min[j];j++){if(min[j] == str[i]){//判断输入字段的数字位置k = j;break;}}b =  k + n;//将往后移动n位对应数字位置c = b % 26;str[i] =  min[c];//得到新的字符串}else if('A'<=str[i] && str[i]<='Z'){//大写字母for(j = 0;max[j];j++){if(max[j] == str[i]){//判断输入字段的数字位置k = j;break;}}b =  k + n;//将往后移动n位对应数字位置c = b % 26;str[i] =  max[c];//得到新的字符串}else//若输入字符不符printf("%c input is incorrect\n", str[i]);}*/int i, j, b, c;for (i = 0; str[i] != '\0'; i++){if ((int)str[i] >= 32 && (int)str[i] <= 126){for (j = 32; j <= 126; j++){if (j == (int)str[i]){ //判断输入字段的数字位置break;}}b = j + n; //将往后移动n位对应数字位置c = b % 94;if(c<32){c=c+32;}str[i] = (char)c; //得到新的字符串}else //若输入字符不符printf("%c input is incorrect\n", str[i]);}
}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了简单凯撒密码。有什么好的建议各位可以多留言鸭。

设计并实现“恺撒密码”--简单版相关推荐

  1. 【JS】设计并实现“恺撒密码”

    问题描述 移位数N=3和7时,分别加密并恢复一段文字,例如"Peace and Love". 要求:(不)区分大小写,但能识别空格.标点: 恺撒密码是古罗马时代经常使用的一种经典加 ...

  2. 恺撒密码太简单?这样一改,秒变地狱级难度(37)

    小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生. 欢迎和猫妹一起,趣味学Python. 今日主题 看过上一篇文章的朋友,可能觉得这样加密,未免太简单了吧? 一共26个字母,最多也 ...

  3. 如何用最暴力的方法实现恺撒密码——python

    恺撒密码是一种最简单且最广为人知的加密技术. • 这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用 此方法与其将军们进行联系. •  它是一种替换加密的技术,明文中的所有字母都在字母表上向后 ...

  4. python练习题15:恺撒密码 I

    恺撒密码 I 描述 凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文:A ...

  5. Python 之恺撒密码加密算法

            恺撒密码(Caesar cipher),又称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个 ...

  6. Python练习:恺撒密码 I

    练习:恺撒密码 I 平台:Python123.io 教师:嵩天 描述 凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的 ...

  7. 恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:

    题目: 恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文:A B C D ...

  8. python练习——恺撒密码 I

    恺撒密码 I 描述 凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文:A ...

  9. 恺撒密码python代码

    恺撒密码python代码 小白自己随便写的,最笨的办法 问题: 恺撒密码 ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫ ...

  10. Python基础编程入门实例:恺撒密码

    文章目录 Python基础编程入门实例:恺撒密码 一.什么是恺撒密码 二.程序运行环境 三.恺撒密码:加密 3.1.恺撒密码加密实例程序 3.2.恺撒密码加密实例程序运行结果 四.恺撒密码:解密 4. ...

最新文章

  1. SQL2000联机丛书:使用和维护数据仓库
  2. 如何快速融入团队(八)
  3. Android BlueBorne (CVE-2017-0781)漏洞分析和利用
  4. 美丽的窗花java分形_美丽的窗花教案
  5. Flutter Web:Shadow Root问题
  6. 类的静态成量变量必须初始化
  7. BIOS误删win10引导 delete boot option如何恢复
  8. 计算机专业还用考计算机等级考试吗,计算机计算与软件考试-计算机毕业相当于全国计算机等级考试几级?我 – 手机爱问...
  9. WebStrom的学习使用 H5开发
  10. ubuntu 安装dnsmasq dnscrypt-proxy
  11. 通过创建制定版本react-native项目解决“Unable to resolve module `AccessibilityInfo` ”的问题...
  12. 手把手搭建一个完整的javaweb项目(适合新手)
  13. android 二级联动列表,仿eleme点餐页面
  14. 手机app服务器端开发初期---工具选择
  15. 公司企业邮箱账号格式怎么填?
  16. 体育教学与计算机技术的结合点,【大学教育论文】虚拟现实技术在高校体育教育的应用(共2757字)...
  17. 清华大学计算机学院曹伦郗,四川文理第一名填报北大 高分“学霸”们最后选了啥专业...
  18. 苹果手机双卡双待是哪一款_手机双卡双待信号有区别吗手机主卡、副卡这些区别,早知道为好!...
  19. 银行卡开户及交易项目--Oracle
  20. OpenStack Networking网络

热门文章

  1. 1.6 mocha配置文件的使用
  2. HALCON 3D 激光三角校准-未完持续
  3. 电脑城最简单骗局,仍然有无数人上当
  4. Python的学习笔记案例8--空气质量指数计算1.0
  5. 视频边缘模糊怎么做,将视频四周虚化而突出中间画面显示
  6. 这样的国企,不去也罢
  7. 基于CEP的量化交易平台建设
  8. 玩转亚马逊 AWS IoT(3): SpringBoot 2.7 集成 AWS IoT 服务
  9. NVIDIA Jetson TK1学习与开发(四):一些细节问题
  10. 作用域链与原型链的区别