asciiテーブル番号の代わりに暗号化中にアルファベット順を使用するにはどうすればよいですか?たとえば、タイムパッドの暗号化(テキスト+キー)をmodulo26で1つ使用したい場合、ASCII番号を取っているようです。 私はC言語で、次を試してみました:asciiの代わりにアルファベット順のローカル番号を使用する方法
encrypted[i] = (text[i]+key[i])%26
しかし、cmdは私の代わりに、暗号文の多くの疑問符を示しています。ここで は私の完全なコードです:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define clear_buffer while(getchar()!='\n');
char* encrypt(char texte[],char cle[]){
char *encrypted;
int i=0;
texte=texte-'a';
cle=cle-'a';
while(texte[i]!='\0' && cle[i]!='\0'){
encrypted[i]='a'+(texte[i]+cle[i])%26;
i++;
}
encrypted[i+1]='\0';
return encrypted;
}
char* decrypt(char encrypted[],char cle[]){
char *decrypted;
int i=0;
while(encrypted[i]!='\0' && cle[i]!='\0'){
decrypted[i]=(encrypted[i]-cle[i])%26;
i++;
}
decrypted[i+1]=0;
return decrypted;
}
int main()
{
char reponse,texte[100],cle[100],encrypted[100];
int i=0;
do{
printf("Voulez vous crypter ou decrypter un texte?(Ecrire C pour crypter et D pour decrypter)\n");
scanf("%c",&reponse);
}while (reponse!='C'&& reponse!='D'&& reponse!='c'&& reponse!='d');//controle pour obliger l'utilisateur à donner c ou d
if(reponse=='C'||reponse=='c'){
clear_buffer;//vider le buffer apres le scanf de la reponse
printf("Donner un texte a crypter\n");
fgets(texte,100,stdin);
while(texte[i]!=0)
i++;
if (i>0 && texte[i-1]!='\n')
clear_buffer;
printf("Donner une cle de meme taille\n");
fgets(cle,100,stdin);
i=0;
while(cle[i]!=0)
i++;
if (i>0 && cle[i-1]!='\n')
clear_buffer;
printf("Le texte crypte est:%s\n",encrypt(texte,cle));
}else{
clear_buffer;//vider le buffer apres le scanf de la reponse
//do{
printf("Donner un texte (deja crypte) à decrypter\n");
fgets(encrypted,100,stdin);
i=0;
while(encrypted[i]!=0)
i++;
if (i>0 && encrypted[i-1]!='\n')
clear_buffer;
printf("Donner la cle (deja utilisee pour crypter\n");
fgets(cle,100,stdin);
i=0;
while(cle[i]!=0)
i++;
if (i>0 && cle[i-1]!='\n')
clear_buffer;
// }while(sizeof encrypted!=sizeof cle);
printf("Le texte decrypte est:%s\n",decrypt(encrypted,cle));
}
system("pause");
return 0;
}
だから、char型の26% – stark
を使用し、私は26 – user105453
文字%を書いたあなたは、テーブルまたはタプルを使用してもらえますか? '{{a、1}、{b、2} ...'またはインデックスを使用する配列さえあります。 –