Я доберусь до сути. Я знаю, что это должно быть просто, но это дает мне обходной путь. Я работаю в безопасной локальной сети. Мне нужно взять вход (в моем случае, IP-адрес) и зашифровать этот адрес, прежде чем безопасно хранить его в базе данных.
Я бы хотел зашифровать его в формате письма. Трудно объяснить, но если вы посмотрите этот код, вы увидите, что я пытаюсь выполнить sh. Я отформатировал его, чтобы принять ввод от вас, пользователя, тогда как эта функция будет вызываться в режиме реального времени в фоновом режиме, когда она работает должным образом.
В идеале, пользователь будет вводить 12.23.34.45
Функция выдаст KS.SL.LE.EI
#include <stdio.h>
#include <string.h>
#define MAXLEN 16
void cwitch(char *instr[MAXLEN]){
char *nstr = "0123456789";
char *cstr = "DKSLEIANQP";
int count = strlen(instr);
char *output[count];
int i;
for(i = 0; i < count; i++){
if(instr[i] != '\0'){
int t;
for(t = 0; t < count; t++){
if(instr[i] == "."){ /*Do Nothing, Straight Logic - I Know This Is Useless*/ }
else if(instr[i] == nstr[t]) output[i] = cstr[t];
}
}
}
output[count] = 0; //Null Terminate The String
printf("Output: %s\n", output);
}
int main(void){
char *input[500];
printf("Enter Address: ");
fgets(input, sizeof(input), stdin);
input[strlen(input) - 1] = 0; //Remove \newline Character
cwitch(input);
return 0;
}
Однако после выполнения я явно не получаю желаемых результатов, иначе меня бы здесь не было!
[root@RyM ~]# ./test
Enter Address: 12.23.34.45
Output:
`
[root@RyM ~]# ./test
Enter Address: 167.174.12.178
Output:
[root@RyM ~]# ./test
Enter Address: 45.223.6.1
Output:
`
[root@RyM ~]# ./test
Enter Address: 918.6.56.222
Output:
[root@RyM ~]#
Любая помощь / совет приветствуется. Я новичок в C. Ожидайте предупреждения при компиляции. Не стесняйтесь поджарить / посоветовать мне, что касается упомянутых предупреждений существования. Изменить: Предупреждения включены ниже
[root@RyM ~]# gcc -o test Test.c
Test.c: In function ‘cwitch’:
Test.c:10: warning: passing argument 1 of ‘strlen’ from incompatible pointer type
/usr/include/string.h:399: note: expected ‘const char *’ but argument is of type ‘char **’
Test.c:19: warning: comparison between pointer and integer
Test.c:19: warning: assignment makes pointer from integer without a cast
Test.c: In function ‘main’:
Test.c:31: warning: passing argument 1 of ‘fgets’ from incompatible pointer type
/usr/include/stdio.h:626: note: expected ‘char * __restrict__’ but argument is of type ‘char **’
Test.c:32: warning: passing argument 1 of ‘strlen’ from incompatible pointer type
/usr/include/string.h:399: note: expected ‘const char *’ but argument is of type ‘char **’```