У меня есть простая программа C, которая больше похожа на сервер «Эхо», для этого я хочу использовать шифрование с следующим требованием,Как шифровать и расшифровывать char [] в C?
- Со стороны клиента после отправки обычного текста на сервер, клиент будет " зашифровать строку»с„предопределенным паролем“и храните его
- сервера получит простой текст, и зашифровать эту строку, используя предопределенный пароль и отправить его обратно
- клиента получают зашифрованный текст, сравнить его с зашифрованным текст на его стороне, и если оба совпадают, нет ошибки, еще покажите ошибку
пытался много вариантов, но здесь другие требований, которые держат неудачу,
- Нет внешних ЛИЭС зависимостей
- Зашифрованного текст должен быть печатями и быть Сохраняемыми в файл (HEX тоже отлично)
- Этот код работает очень часто (например, сервер чата). Поэтому нужно быть как можно быстрее, но не так просто догадаться.
Могу ли я, пожалуйста, получить помощь по заполнению этого кода, при этом зашифрованный текст должен быть в ASCII (или HEX).
Ниже приводится образец моего существующего кода,
НА КЛИЕНТА СТОРОНЕ
char *randomAllowchar = "abcdefghijklmnopqrstuvwxyz";
char plainStrToServer[30];
// generating 20 char random string
for (n = 0;n < 20;n++) {
key = rand() % 26;
plainStrToServer[n] = randomAllowchar[key];
}
... other code to send this plainStrToServer to server side
// Receiving response from server
char server_reply[200];
if(recv(sock , server_reply , 200 , 0) < 0){
...
}
// comparing if server response matched with sent string
if (strcmp(plainStrToServer,server_reply) != 0) {
// Error
}
ПО на стороне сервера
char buffer[30];
int rc1;
while (1) {
rc1 = read(fd, buffer, sizeof(buffer));
// write back original received message back to client
write(fd , buf, strlen(buffer));
}
См. Алгоритм XTEA. Это очень коротко. Кроме того, необходимо будет добавить CBC и Base64/uuencode, чтобы сделать вывод текста. – i486
Правило номер один при выполнении шифрования: используйте библиотеку. Есть так много способов сделать это неправильно так, как вы никогда не слышали, вы никогда не получите его действительно надежным. Конечно, это не проблема, если у вас только низкий уровень безопасности. –
Благодарим вас за ответ. XTEA кажется хорошим вариантом, поскольку он может быть скомпилирован независимо. Любой пример использования этого https://tls.mbed.org/api/xtea_8c_source.html в текущем контексте клиентского сервера будет полезен. Я по-прежнему новичок в том, как преобразовать зашифрованный ответ на HEX, а затем отправить его обратно клиенту (с сервера). Спасибо – Rahul