пытаюсь просто проверить как работает шифрование-дешифрование код ТЕСТОВОЙ функции
string Crypt(const char* pass, const char* salt, const char* text)
{
if (!gcry_check_version(GCRYPT_VERSION))
{
syslog(LOG_ERR, "libgcrypt version mismatch\n");
return "";
}
gcry_error_t gcryError;
gcry_cipher_hd_t hd;
size_t passLen = strlen(pass);
size_t saltLen = strlen(salt);
size_t textLen;
char* outBuff;
gcryError = gcry_cipher_open(&hd, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CBC, GCRY_CIPHER_CBC_CTS);
if (gcryError)
{
syslog(LOG_ERR, "gcry_cipher_open failed: %s/%s\n", gcry_strsource(gcryError), gcry_strerror(gcryError));
return "";
}
gcryError = gcry_cipher_setkey(hd, pass, passLen);
if (gcryError)
{
syslog(LOG_ERR, "gcry_cipher_setkey failed: %s/%s\n", gcry_strsource(gcryError), gcry_strerror(gcryError));
return "";
}
gcryError = gcry_cipher_setiv(hd, salt, saltLen);
if (gcryError)
{
syslog(LOG_ERR, "gcry_cipher_setiv failed: %s/%s\n", gcry_strsource(gcryError),gcry_strerror(gcryError));
return "";
}
stringstream buff("");
textLen = strlen(text);
outBuff = (char*)malloc(textLen);
gcryError = gcry_cipher_encrypt(hd, outBuff, textLen, text, textLen);
buff.str(outBuff);
free(outBuff);
textLen = buff.str().size();
outBuff = (char*)malloc(textLen);
gcryError = gcry_cipher_decrypt(hd, outBuff, textLen, buff.str().c_str(), textLen);
if (gcryError)
{
syslog(LOG_ERR, "gcry_cipher_decrypt failed: %s/%s\n", gcry_strsource(gcryError), gcry_strerror(gcryError));
return "";
}
buff.str(outBuff);
gcry_cipher_close(hd);
free(outBuff);
return buff.str();
}
string bf = Crypt("1234567890123456", "0987654321654321", "blablabla1234567890");
в ответ галиматья чередующаяся с дешифрованным текстом (( понимаю что ошибка где то в преобразовании типов, но где понять не могу.