凯撒密码1

news/2024/9/23 6:27:44

一、常规凯撒

1.原理:

它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

 2.代码实现凯撒

#include <stdio.h>
#include <stdlib.h>
int main (){
char small_letter[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 big_letter[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 text[1000],result[1000];
int c,count=0,k,p;
char function;
printf("Insert Text:");
c=getchar();
while(1) //读取字符串
{
if(c == '\n') break;
text[count]=c;
printf("%c",text[count]);
count++;
c=getchar();
}

printf("\n");
printf("Encrypt or Decrypt? E or D :");
scanf("%c",&function);
if (function == 'E'){

printf("Insert Key :" );
scanf("%d",&k);
for(int i=0;i<count;i++){
if(text[i]>='A'&&text[i]<='Z')
{
result[i]=big_letter[((text[i]-'A')+k)%26];
}
//找出加密后字符在字符数组里的对应位置
else if (text[i]>='a'&&text[i]<='z')
{
result[i]=small_letter[((text[i]-'a')+k)%26];
}
else result[i]=text[i];
printf("%c",result[i]);
}
}

else {
printf("Insert Key :" );
scanf("%d",&k);
for(int i=0;i<count;i++){
if(text[i]>='A'&&text[i]<='Z')
{
p=((text[i]-'A')-k);
while(p<0)p+=26;
result[i]=big_letter[p];
}
//找出解密后字符在字符数组里的对应位置
//这里要注意不要让它超出范围(下表位置为负数)
else if (text[i]>='a'&&text[i]<='z')
{
p=((text[i]-'a')-k);
while(p<0)p+=26;
result[i]=small_letter[p];
}
else result[i]=text[i];
printf("%c",result[i]);
}
printf("\n");
}
return 0;
}

二、变异凯撒

1.原理:常规凯撒是每个字母的偏移量是一样的,变异凯撒是第一个字母偏移量是m,第二个偏移量是m+1(或m+n),之后的依次在前一个的偏移量上+1(或+n)

2.例题

寒鹭变异凯撒:题是mrfk~Gbsx]@]`mZjt,之前正好解了一道与这个相似的,直接用凯撒密码解不出来,是变异的。所以mrfk正好对应flag,m对f偏移量为-7,r对l为-6,f对a为-5,k对g为-4,所以每次加一,用ASCII表对照来解

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31293.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

如何完美实现文件外发防泄漏,保护核心数据资产?

不管是大型企业,还是小型创业公司,不论企业规模大小,每天都会有大量的文件要进行内部传输协作和对外发送使用,数据的生产也是企业业务生产力的体现之一。因此文件外发防泄漏是企业信息安全中的一个重要议题,为了防止企业敏感信息的泄露,企业可以采取以下一些措施: 权限管…

「网络流浅谈」网络流的概念

讲解了网络流的基本概念,从流网络到最大流最小割定理,带你探索网络流的世界。通常做题思路:问题转化为流网络,再通过最大流 / 最小割 / 费用流与问题之间的数量关系,求解出原问题。 网络流于其他算法不同,概念定理需要熟记于心,否则后面做题会有很大的障碍。 1. 流网络 …

apisix~lua插件开发与插件注册

开发插件的步骤 在APISIX中,要自定义插件,一般需要按照以下步骤进行操作:编写Lua脚本:首先,你需要编写Lua脚本来实现你想要的功能。可以根据APISIX提供的插件开发文档和示例进行编写。将Lua脚本放置到APISIX插件目录:将编写好的Lua脚本文件放置到APISIX的插件目录下,一般…

如何安全高效地进行4S店文件分发,保护核心资产?

4S店与总部之间的文件分发是确保双方沟通顺畅、信息共享和决策支持的重要环节。4S店文件分发涉及到以下文件类型: 销售报告:4S店需要定期向总部提交销售报告,包括销售数量、销售额、市场份额等关键指标。 库存管理文件:包括车辆库存、零件库存的更新和需求预测,以便于总部…

JDBC连接openGauss6.0和PostgreSQL16.2性能对比

PostgreSQL 16.2 对比 openGauss 6.0 在连接创建上大概有3~4倍左右的性能优势,都是在毫秒级别。本文分享自华为云社区《JDBC连接openGauss6.0和PostgreSQL16.2性能对比》,作者: Gauss松鼠会小助手。 PostgreSQL vs openGauss 01 前置准备 安装JDK: 详细安装步骤请问度娘,输…

中移铁通禹路由 ExportSettings 敏感信息泄露漏洞

漏洞描述: 该漏洞由于cgi-bin/ExportSettings.sh未对用户进行身份验证,导致攻击者能够未授权获取到路由器设置信息,包含了后台管理员用户的账号和密码 fofa: title="互联世界 物联未来-登录" 鹰图: web.body="互联世界 物联未来-登录" POC: GET /cgi-bi…

用友畅捷通TPlus-keyEdit.aspx接口存在SQL注入漏洞

漏洞描述: 该漏洞是由于畅捷通T的/tplus/UFAQD/keyEdit.asp接口处未对用户的输入进行过滤和校验,未经身份验证的攻击者可以利用SQL注入漏洞获取数据库中的信息 fofa: app="畅捷通-TPlus" POC: GET /tplus/UFAQD/keyEdit.aspx?KeyID=1%27%20and%201=(select%20@@ve…

vue3编译优化之“静态提升”

本文讲了vue3是如何实现编译优化之“静态提升”,静态节点无需每次执行render函数都去生成一次虚拟DOM前言 在上一篇 vue3早已具备抛弃虚拟DOM的能力了文章中讲了对于动态节点,vue做的优化是将这些动态节点收集起来,然后当响应式变量修改后进行靶向更新。那么vue对静态节点有…