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'}; 

変更後、最後に文字 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

手動でアルファベットを定義しなくても、単純な転置 ( 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 に答える
0

おそらく最も明確なのは、次のように書くことです。

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

これにより、テーブル内で y と z を交換していることは明らかです。

于 2012-05-06T13:02:48.163 に答える