怎么在这个基础上完成简单数字的加密解密过程

#define N 100
#include<stdio.h>
#include<string.h>

void encode(char str[N],int n)
{

char ch;
int i;
for(i=0;i<strlen(str);i++)

img

{

ch=str[i];  //原来的字符
str[i]+=n;  //每个字符串位移后的字符

if((ch>='a'&&ch<='z'&&str[i]>'z')//小写字母
   ||(ch>='A'&&ch<='Z'&str[i]>'Z'))//大写字母
str[i]-=26; //将字符转换成字母范围内

}
}

void decode(char str[N],int n)
{

char ch;
int i;
for(i=0;i<strlen(str);i++)
{

ch=str[i];  //原来的字符
str[i]-=n;  //每个字符串位移后的字符

if((ch>='a'&&ch<='z'&&str[i]<'a')//小写字母
   ||(ch>='A'&&ch<='Z'&str[i]<'A'))//大写字母
str[i]+=26; //将字符转换成字母范围内

}
}

int main()
{
char str[N]; //字符串的原文
int n; //密钥

printf("请输入一个明文字符串:");
gets(str);  //输入一个字符串

printf("请输入要位移的数字密钥:");
scanf("%d",&n);

encode(str,n);  //使用密钥对明文进行加密操作
printf("加密后的原文:%s\n",str);

decode(str,n);
printf("解密后的原文:%s\n",str);

return 0;

}

是要多位的密钥吗

img

#define N 100
#include<stdio.h>
#include<string.h>

void encode(char str[N],int n)
{

    char ch;
    int i;
    for(i=0; i<strlen(str); i++)

    {

        ch=str[i]; //原来的字符

        str[i]+=n; //每个字符串位移后的字符

       /* if((ch>='a'&&ch<='z'&&str[i]>'z')//小写字母

                ||(ch>='A'&&ch<='Z'&str[i]>'Z'))//大写字母

            str[i]-=26;*/ //将字符转换成字母范围内

    }
}

void decode(char str[N],int n)
{

    char ch;
    int i;
    for(i=0; i<strlen(str); i++)
    {

        ch=str[i]; //原来的字符

        str[i]-=n; //每个字符串位移后的字符

       /* if((ch>='a'&&ch<='z'&&str[i]<'a')//小写字母

                ||(ch>='A'&&ch<='Z'&str[i]<'A'))//大写字母

            str[i]+=26;*/ //将字符转换成字母范围内

    }
}

int main()
{
    char str[N]; //字符串的原文
    int n=9; //密钥

    printf("请输入一个明文字符串:");

    gets(str); //输入一个字符串

    //printf("请输入要位移的数字密钥:");

    //scanf("%d",&n);

    encode(str,n); //使用密钥对明文进行加密操作

    printf("加密后的原文:%s\n",str);

    decode(str,n);

    printf("解密后的原文:%s\n",str);

    return 0;

}