私はCでcrypt関数を使用しています。ここでは、コマンドライン入力に暗号化された単語を入力しています。/ usr / share / dict / words内の単語を使用し、crypt関数を使用して暗号化してから、crypt関数の暗号化された出力をコマンドライン入力と比較します。単語が同じ場合は、printfステートメントを使用して、暗号化されていないコードを出力として出力します。コードを以下に示します。
#include<stdio.h>
#define _XOPEN_SOURCE
#include<unistd.h>
#include<cs50.h>
#include<string.h>
int
main(int argc, string argv[]){
char line[80];
string crypto;
if(argc>2||argc<2)
{
printf("ERROR. Enter only one crypt");
return 1;
}
string crypti=argv[1];
FILE *fr;
string as;
fr=fopen("/usr/share/dict/words","r");
if(!fr)
{
printf("File can't be read");
exit(-1);
}
while(fgets(line,80,fr)!=NULL)
{
as=crypt(line,"50");
if(strcmp(as,crypti)==0)
{
printf("%s",line);
break;
}
}
fclose(fr);
}
コードは、1つの入力、つまり「./a.out50q.zrL5e0Sak」(引用符なし)を指定した場合にのみ正常に機能するようです。ただし、暗号化に他の入力を使用すると、コードが失敗するようです。password:encrypted passwordの別の例は、abaca:50TZxhJSbeG1Iです。アバカという単語がリストに含まれていますが、識別できません。このコードをすべての入力で機能するように修正することはできません。