首页 > 其他分享 >凯撒密码详解

凯撒密码详解

时间:2022-11-09 02:55:25浏览次数:43  
标签:26 边界 对于 int 密码 详解 移动 凯撒

凯撒密码最佳的解法就是用指针位移进行求解

这是后面在路上想到的
解法:
就是生成一个a到z的

最初的做法:

就是也是生成一个a到z序列,然后进行向后移动,生成解密序列,然后通过a[b[i]-'a']
运算出要在a数组中要寻找的位置,然后进行直接查找

缺点:对于大于26的数超出边界之后找出一个符合的表达式,容易在z的特判中算出负数
容易在a到y中大的数中超出边界,不好判断是否符合情况,容易思维混乱

对:不仅仅是数学题的解答,还有编程题的解答,都很注重一点,就是:思维一定不要混乱,在开始时可能会想到一个不是最有的想法,在实现的过程中会多次的遇到bug,因为对于这种解法很容易会漏想到条件,如果发现自己在解答的过程中发现加的判断越来越多,程序的逻辑越来与复杂就不要继续写下去了,最好换个思路或者想办法在最基础的一个点上进行优化。

#include<cstdio>
#include<cstring>


char a[26];
char b[55];
int main()
{
    int n=0;
    //int h=0;
    scanf("%d",&n);
    for(int i=0;i<25;i++)
    {
        int u=i+n;
        if(u>26)
        {//只要对于超出边界的情况的都要进行取模操作
              u%=26;//对于一个处于后面的字符,如果再向后面逐个位移,很容易移动的超出边界
        }
        a[i]='a'+ u;
    }
    if(n>26){
        n%=26;//对于一个很大的数,如果想要把他转换成对应的小于某个上界的数,比如向后移动26位就相当于没有向后移动,对于向后移动27位就相当于向后移动1位。
        //可见对于一个递增的数,我们要将其转换成一个周期性对应的数,这种情况下,我们就比较建议使用取模进行运算,而不是使用循环的使用减法进行减到小于26的数
    }
    a[26]='z'-(26-(n-1));
   // printf("%d",n);
    scanf("%s",b);
    for(int i=0;i<strlen(b);i++)
    {
        //printf("%c",b[i]);
        printf("%c",a[b[i]-'a']);
    }
    return 0;
}

标签:26,边界,对于,int,密码,详解,移动,凯撒
From: https://www.cnblogs.com/E-Sheep/p/16871885.html

相关文章

  • 就“如何判断旧密码是否存在”而言
    判断旧密码是否存在经过我的分析,他可能就是需要在后台进行判断的,那就好办多啦!具体实现来啦!(以顾客角色为例)那接下来就只是展示对于密码存在的判断啦,更大范围的实现的话,就......
  • 房产管理系统之重置密码
    重置密码该功能只存在于系统管理员界面,那就从系统管理员的功能界面展开说说吧!这个功能在拥有了两个存储了密码的表之后,就变得很容易了show.jsp(房产经纪功能界面)makeP......
  • 输入密码的对错
    #include<stdio.h>intmain(){inti=0;charpassword[20]={0};for(i=0;i<2;i++){printf("请输入密码:");scanf("%s",password);if(strcmp(password,"520417")==0......
  • Kubernetes K8S之Service服务详解与示例
    主机配置规划Service概述KubernetesService定义了这样一种抽象:逻辑上的一组Pod,一种可以访问它们的策略——通常被称为微服务。这一组Pod能够被Service访问到,通常是......
  • 「价值链为本,数字化为翼」新常态下快消品牌企业如何把握增长密码?
    快消品牌企业增长面临的新常态回望2020年1月23号武汉封城至今,新冠疫情已经伴随了我们整整2个年头。两年前突然爆发的一场疫情,打得众多企业措手不及,但对于快消行业的很多品......
  • linux 命令:more详解
    名称more-用于crt查看的文件阅读过滤器用法more[options]file...描述more是一个过滤器,用于一次一屏地翻阅文本。用户应该意识到less......
  • hasOwnProperty() 方法详解
    hasOwnProperty(propertyName)方法是用来检测属性是否为对象的自有属性,如果是,返回true,否者false;参数propertyName指要检测的属性名;用法:object.hasOwnProperty(property......
  • HNCTF的pyjail做题过程详解
    简述:因为本人对python的内置函数理解也不是深入,在做题过程中也是靠着出题人的hint和google大法才做出来几题,详细的解题过程和知识点讲解可以看一下春哥的知乎,[PyJail]pyt......
  • Hex编码详解
    最近准备把常用的密码学相关的一些算法都过一遍,先从最简单的Hex编码开始吧在我自己学习的过程中,看过别人的文章,自己也看过源码,发现有些文章的介绍是有问题的所以我这里会......
  • MySql登录密码忘记,如何进行修改
    1.使用快捷键(win+Q)打开搜索框,在里面输cmd,单击以“管理员”运行的选项2.在打开的dos界面中,先确定Mysql服务已经关闭,可以使用netstopmysql命令进行确定3.先切换到安......