On Sun, Apr 22, 2007 at 11:44:22PM +0200, Michal wrote:

> Hi,
> 
> I have written encrypt/decrypt functions that use blowfish and the issue is 
> that they works fine if the input string length is divisible by 8. I have 
> found in docs that blowfish uses 8 byte blocks. So I must do padding. Do I 
> have to do it manually or is there any function that does it for me ?
> encrypt:
> 
>        void encrypt_message(const char *buffin, size_t buffinSize, char 
> **buffout, const
>           char *key)
>         {
> 
>           BIO *mem = BIO_new(BIO_s_mem());
>           BIO *b64=BIO_new(BIO_f_base64());          
>           BIO *cipher=BIO_new(BIO_f_cipher());
>           BIO_set_cipher(cipher, EVP_bf_ecb(), (unsigned char*)key, NULL,1);

Don't use ECB to encrypt data streams. You need at least CBC, and probably
an integrity layer (MAC) also. Read the "openssl enc" source code..

-- 
        Viktor.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to