如何从编码密钥(替换密码)C生成解码密钥

如何从编码密钥(替换密码)C生成解码密钥,c,C,编码键是“qwertyuiopasdfghjklzxcvnm”,这是在程序中输入“abcdefghijklmnopqrstuvwxyz”时得到的代码。我如何用它来做一个解码键。这是一个替换密码。如果你有一个建议,请保持简单,并利用你的变量。没有复杂或任何库函数 char * decodeSubstitution(char * lcEncodingKey, char * src, char * dest) { char lcDecodingKey[26]; cha

编码键是“qwertyuiopasdfghjklzxcvnm”,这是在程序中输入“abcdefghijklmnopqrstuvwxyz”时得到的代码。我如何用它来做一个解码键。这是一个替换密码。如果你有一个建议,请保持简单,并利用你的变量。没有复杂或任何库函数

    char * decodeSubstitution(char * lcEncodingKey, char * src, char * dest)
{
    char      lcDecodingKey[26];
    char      ucDecodingKey[26];





    char* deststart=dest;


    int i ;


    int offset1;
    int offset2;

    // Create the lower case decoding key from the lower case encoding key
    // (WRITE CODE HERE)
     for (i=0; i<26 ; i++){
     //    lcDecodingKey[i]=lcEncodingKey[i];
          lcDecodingKey[i]=

         ucDecodingKey[i]= toupper(lcDecodingKey[i]);
     }


    // Create the uppercase decoding
    // (WRITE CODE HERE)


    // Implementation of the generalized substitution decoder.
    // (WRITE CODE HERE)
    for (; *src; ++src, ++dest)
    {
      if (isupper(*src))
        {
            offset2=*src-'A';
            *dest=ucDecodingKey[offset2];

         }



         else if (islower(*src)){
              offset1 = *src - 'a';

       *dest = lcDecodingKey[offset1];
         } else{

             *dest=*src;
         }
    }
         *dest = '\0';

         return deststart;


}
char*decode替换(char*lcEncodingKey,char*src,char*dest)
{
字符编码键[26];
char-ucDecodingKey[26];
char*deststart=dest;
int i;
国际抵销1;
国际抵销2;
//从小写编码键创建小写解码键
//(在此处编写代码)

对于(i=0;i编码时,替换是在编码键
enc
中进行简单查找:

cipher = enc[plain]
其中,
cipher
plain
是从
a
(0)到
z
(25)的小写字母的索引。解码时,解码键,
dec

plain = dec[cipher]
      = dec[enc[plain]]
当然,
dec[enc[plain]]
必须映射到自身,您可以从编码密码创建解码密码,如下所示:

for (int i = 0; i < 26; i++) {
    dec[enc[i]] = i;
}
例如:如果对
c
(索引2)进行编码,它将成为
e
。如果对其进行解码(或使用解码键进行编码),
e
(索引4)将再次成为
c


(当然,你仍然必须将ASCII字符映射到自然索引0到25。我将把它留给你。)

请在发布代码时更加小心。没有什么比大量的
(在这里编写代码)更能尖叫“救命,我不能做作业,截止日期是今天”的了
在代码中。我一点都不明白。你为什么把字符当作整数来处理?你能解释一下你做了什么吗。特别是for循环的部分。呃,我以为你已经有了一个对字符串进行编码的例程,不是吗?而且你已经使用了
islower
和偏移量计算。在C中,
char
是一个小整数如果你不知道,你应该回去学习你的基础知识。
enc: qwertyuiopasdfghjklzxcvbnm
dec: kxvmcnophqrszyijadlegwbuft