Итак, я просто провожу некоторые тесты по отправке зашифрованных сообщений через winsock (Да, я знаю, что SSH делает то же самое, просто для удовольствия.) Но моя проблема в том, чтобы на самом деле иметь возможность шифрования с помощью метода, который яЯ использую, мне нужно что-то большее, чем просто 8 бит (символ, массив здесь не будет работать.) Любая помощь?
#include <iostream>
#include <vector>
#include <fstream>
#include <WS2tcpip.h>
#pragma comment(lib, "ws2_32.lib")
#include <Windows.h>
using namespace std;
void __cdecl xorEncryptBytes(unsigned char bytesToEncrypt[], unsigned int byteBuffer[], unsigned int
arrayLength, unsigned int encryptionKey, int shift) {
for (int _countNumber = (0); _countNumber <= (arrayLength); _countNumber++) {
byteBuffer[_countNumber] = (bytesToEncrypt[_countNumber]);
};
for (unsigned int _countNumber = (0); _countNumber <= (arrayLength); _countNumber++) {
byteBuffer[_countNumber] ^= (encryptionKey);
byteBuffer[_countNumber] <<= (shift);
};
return;
};
unsigned char* __cdecl xorDecryptBytes(unsigned int bytesToEncrypt[], unsigned char charBuffer[],
unsigned int arrayLength, unsigned int encryptionKey, int shift) {
for (unsigned int _countNumber = (0); _countNumber <= (arrayLength); _countNumber++) {
bytesToEncrypt[_countNumber] >>= (shift);
bytesToEncrypt[_countNumber] ^= (encryptionKey);
};
for (unsigned int _countNumber = (0); _countNumber <= (arrayLength); _countNumber++) {
charBuffer[_countNumber] = (bytesToEncrypt[_countNumber]);
};
return (charBuffer);
};
int __cdecl main(void) {
unsigned char bytes[5] = ("sup?");
unsigned int byteBuffer[4096];
unsigned char charBuffer[4096];
xorEncryptBytes(bytes, byteBuffer, 5, 1, 2);
//-- How would I send the bytebuffer through?
std::cin.get();
return (0);
};
Я знаю, что это плохо, просто терпите меня.
РЕДАКТИРОВАТЬ: я придумал решение, которое заключается в использовании функции сдвига по битам для переноса бит при смене, что устраняет необходимость в большем типе данных, спасибо за вашу помощь!