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