Translit XOR шифрование C ++ в стек переполнения

Я хочу транслировать XOR шифрование с ++ на php. Я использую эту функцию для шифрования. Я хочу расшифровать этот файл с помощью php.

wchar_t* encryptDecrypt(const wchar_t* toEncrypt, int length,   wchar_t* EBKey) {
const wchar_t* key = EBKey;
wchar_t* output = new wchar_t[length];

for (int i = 0; i < length; i++) {
output[i] = toEncrypt[i] ^ key[i % wcslen(key)];
}
return output;
}

Я читаю двоичный файл xls и шифрую с encryptDecrypt

void encryptAndSave(char *src,AnsiString key) {
wchar_t *content;
wchar_t  buffer[255];
wchar_t *result;

long size;
long fsize;

FILE *f=NULL;

f=fopen(src,"rb+");

fseek(f, 0, SEEK_END);
size = ftell(f);
fseek(f,0, SEEK_SET);

content = (wchar_t *) malloc(size * sizeof (wchar_t));
fread(content, size, 1, f);
fclose(f);

content=encryptDecrypt(content,size,strToWchar_t(key));

f=fopen(src,"wb+");
fwrite(content, size, 1, f);
fclose(f);
}

Я использую эту функцию для преобразования ключа в wchar_t

wchar_t* strToWchar_t(AnsiString value) {
int iSize = value.WideCharBufSize();
wchar_t *tmp = new wchar_t[iSize];

value.WideChar(tmp,iSize);
return tmp;
}

Этот код в php для расшифровки

function encryptDecrypt($toEncrypt,$key) {
$output=array();
for ( $i = 0; $i < strlen($toEncrypt); $i++ ) {
$output[$i]= $toEncrypt[$i] ^ $key{$i % strlen($key)};
}
return $output;
}

Но это не правильно дешифрование. Когда я шифрую и дешифрую это слово на c ++, результат должен быть от «qwerty» до «ﻎ CDT @ GH», но в php он не работает как c ++. Когда я расшифровываю «ﻎ CDT @ GH» в php, я получаю «яМp1v3e2s1u3y2», но я должен получить «qwerty». Пожалуйста, помогите решить эту проблему.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]