Приведу код.
| Код | QByteArray digest; QByteArray _plain; QByteArray _keybuf; QByteArray _ivec;
unsigned char *keybuf; unsigned char *plain; unsigned char *ivec; unsigned char *encrypted; unsigned char *padding;
int outlen,tmplen;
digest.clear(); _plain.append(lineEdit_3->text()); _keybuf.append(lineEdit->text()); _ivec.append(lineEdit_2->text());
plain = reinterpret_cast<unsigned char *>(_plain.data()); keybuf = reinterpret_cast<unsigned char *>(_keybuf.data()); ivec = reinterpret_cast<unsigned char *>(_ivec.data());
EVP_CIPHER_CTX ctx; EVP_CIPHER_CTX_init(&ctx);
EVP_EncryptInit(&ctx, EVP_bf_cbc(), keybuf, ivec);
if (!EVP_EncryptUpdate(&ctx, encrypted, &outlen, plain, _plain.count())) { //error }
for (int i = 0; i < outlen; i++) digest.append(encrypted[i]);
if (!EVP_EncryptFinal(&ctx, padding, &tmplen)){ //error }
for (int i = 0; i < tmplen; i++) digest.append(padding[i]);
EVP_CIPHER_CTX_cleanup(&ctx);
lineEdit_3->setText(digest);
|
Собственно проблема, никак не пойму из-за чего.
Код повешен на кнопку. Запускаю приложение, ввожу данные, все работает. При повторном нажатие кнопки вылетает Segmentation Fault. Может кто знает, где зарыта ошибка? Проелывается все в Ubuntu 10.04 |