凯撒密码算法分析

凯撒密码问题

凯撒密码算法分析_第1张图片

算法一:字母表移位

思路:

先构建一个正常顺序的字母表,之后根据传入的key值来移位

key值的正负要分类讨论

之后用strchr来寻str中的每个字母,将其转换为新字母表对应index的值,实现凯撒密码
代码实现:

# include
# include

void transform(char str[],int key,int len){
    //打字母表
    char alphaTable[27]="";
    for(int i=0;i<26;i++) alphaTable[i]='A'+i;
    alphaTable[26]='\0';
    //转换字母表
    char newAlphaTable[27];
    strcpy(newAlphaTable,alphaTable);
    //大于0
    if(key>=0)
        for(int i=0;i<26;i++){
            if(i+key>25) newAlphaTable[i]='A'+i+key-26;
            else newAlphaTable[i]+=key;
        }
    //小于0
    else{
        for(int i=0;i<26;i++){
            if(i+key<0) newAlphaTable[i]='Z'+i+key+1;
            else newAlphaTable[i]+=key;
        }
    }
    //transform
    for(int i=0;i移动位数
    int key;
    char str[101]="";
    scanf("%d%s",&key,str);
    int len = strlen(str);
    transform(str,key,len);
    printf("str = %s\n",str);
}

后续如果有新的算法会补充

你可能感兴趣的:(算法,算法)