0

我正在尝试编写加密算法。我更改了字母顺序。

char alfabe[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; 

更改后,我想将 last 分配给字母 z 和 y,但我无法使用这些代码。

 strcpy(alfabe[25],"z");
         strcpy(alfabe[26],"y");
4

4 回答 4

1

这至少适用于小写字母:

char *p;
for(p = mystr; *p; p++)
    if(*p >= 'a' && *p <= 'z')
        *p = alfabe[*p-'a'];

但请记住,转置不是加密

于 2012-05-06T12:50:43.600 回答
0
alfabe[24] = 'z';
alfabe[25] = 'y';

strcpy 在这里使用绝对是错误的。

于 2012-05-06T12:49:33.447 回答
0

也许最清楚的是写:

alfabe['y' - 'a'] = 'z';
alfabe['z' - 'a'] = 'y';

这使得您在表中交换 y 和 z 非常明显。

于 2012-05-06T13:02:48.163 回答
0

您可以更轻松地进行简单的转置(Caesar cypher)机制,而无需手动定义字母表。

char* text;
int i, num_transpose;

for(i=0; a[i] != '\0'; i++)  
  if (a[i] >= 'a' && a[i] <= 'z')
    text[i] = (text[i] - 'a' + num_transpose) % ('z'-'a'+1) + 'a';

这会将文本中的num_transpose字母按字母表中的位置移动。请注意,这仅适用于小写 ASCII 字母。

于 2012-05-06T13:07:58.710 回答