From: Andrei P. M. <map...@gm...> - 2013-08-08 11:52:03
|
Hello everyone! I have a client server program in C that encrypts/decrypts data with libmcrypt. The client encrypts the string that wants to send to server, send it, and after the server reads, decrypts it. Bellow are my encrypt and decrypt function: *encrypt function:* *void encrypt(char *es, char *key, char *civ, size_t length) {//es - string to encrypt, length - the length of es MCRYPT td; int n; td = mcrypt_module_open(MCRYPT_TWOFISH, NULL, MCRYPT_CFB, NULL ); if (td == MCRYPT_FAILED) { log_err(log_opts, strerror(errno)); exit(1); } n = mcrypt_enc_get_iv_size(td); char iv[n + 1]; strncpy(iv, civ, n); iv[n] = '\0'; if ((mcrypt_generic_init(td, key, KEY_SIZE, iv)) < 0) { log_err(log_opts, "while trying to do mcrypt_generic_init."); exit(1); } mcrypt_generic(td, es, length); if (mcrypt_module_close(td) < 0) { log_err(log_opts, "while trying to close module."); exit(1); } }* *decrypt function: **void decrypt(char *ds, char *key, char *civ, size_t length) { MCRYPT td; int n; td = mcrypt_module_open(MCRYPT_TWOFISH, NULL, MCRYPT_CFB, NULL ); n = mcrypt_enc_get_iv_size(td); char iv[n + 1]; strncpy(iv, civ, n); iv[n] = '\0'; if ((mcrypt_generic_init(td, key, KEY_SIZE, iv)) < 0) { log_err(log_opts, "trying to do mcrypt_generic_init."); exit(1); } mdecrypt_generic(td, ds, length); if (mcrypt_module_close(td) < 0) { log_err(log_opts, "while trying to close module."); exit(1); } }* *My problem:* There are cases when a string encrypted does not get the previous result when decrypted. Can anyone suggest my where the problem can come from? Thanks in advance! |