*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Tru64 Unix man pages -> BF_cfb64_encrypt (3)              
Title
Content
Arch
Section
 

blowfish(3)

Contents


NAME    [Toc]    [Back]

       blowfish,      BF_set_key,     BF_encrypt,     BF_decrypt,
       BF_ecb_encrypt,     BF_cbc_encrypt,      BF_cfb64_encrypt,
       BF_ofb64_encrypt, BF_options - Blowfish encryption

SYNOPSIS    [Toc]    [Back]

       #include <openssl/blowfish.h>

       void BF_set_key(
               BF_KEY *key, int len, const unsigned char *data );
       void BF_ecb_encrypt(
               const  unsigned  char  *in,  unsigned  char  *out,
       BF_KEY *key, int enc ); void BF_cbc_encrypt(
               const  unsigned  char  *in,  unsigned  char  *out,
             long length, BF_KEY *schedule, unsigned char  *ivec,
       int enc ); void BF_cfb64_encrypt(
               const  unsigned  char  *in,  unsigned  char  *out,
             long length, BF_KEY *schedule, unsigned char  *ivec,
       int *num,           int enc ); void BF_ofb64_encrypt(
               const  unsigned  char  *in,  unsigned  char  *out,
             long length, BF_KEY *schedule, unsigned char  *ivec,
       int *num ); const char *BF_options(
               void ); void BF_encrypt(
               BF_LONG    *data,const   BF_KEY   *key   );   void
       BF_decrypt(
               BF_LONG *data,const BF_KEY *key );

DESCRIPTION    [Toc]    [Back]

       This library implements the  Blowfish  cipher,  which  was
       invented     and    described    by    Counterpane.    See
       http://www.counterpane.com/blowfish.html.

       Blowfish is a block cipher  that  operates  on  64-bit  (8
       byte)  blocks  of  data.  It uses a variable size key, but
       typically, 128-bit (16 byte) keys are considered good  for
       strong encryption.  Blowfish can be used in the same modes
       as DES. See des_modes(7).  Blowfish is one of  the  faster
       block  ciphers.   It  is  faster than DES, and much faster
       than IDEA or RC2.

       Blowfish consists of a key  setup  phase  and  the  actual
       encryption or decryption phase.

       The BF_set_key() function sets up the BF_KEY key using the
       len bytes long key at data.

       The  BF_ecb_encrypt()  function  is  the  basic   Blowfish
       encryption   and   decryption  function.  It  encrypts  or
       decrypts the first 64  bits  of  in  using  the  key  key,
       putting  the result in out.  The enc decides if encryption
       (BF_ENCRYPT) or  decryption  (BF_DECRYPT)  shall  be  performed.
   The  vector  pointed at by in and out must be 64
       bits in length, no less.  If they are  larger,  everything
       after the first 64 bits is ignored.

       The      BF_cbc_encrypt(),     BF_cfb64_encrypt(),     and
       BF_ofb64_encrypt() mode functions all operate on  variable
       length  data.  They all take an initialization vector ivec
       which needs to be passed along into the next call  of  the
       same function  for the same message.  The ivec may be initialized
 with anything, but the recipient  needs  to  know
       what  was  used,  or  it  won't  be able to decrypt.  Some
       programs and protocols simplify this. For example, ivec is
       simply  initialized  to  zero in SSH. The BF_cbc_encrypt()
       function operates of data that is a multiple  of  8  bytes
       long,  while the BF_cfb64_encrypt() and BF_ofb64_encrypt()
       functions are used to encrypt a variable number  of  bytes
       (the  amount  does not have to be an exact multiple of 8).
       The purpose of  the  latter  two  is  to  simulate  stream
       ciphers, and therefore, they need the parameter num, which
       is a pointer to an integer where  the  current  offset  in
       ivec  is  stored between calls.  This integer must be initialized
 to zero when ivec is initialized.

       The BF_cbc_encrypt() function is the Cipher Block Chaining
       function  for  Blowfish.   It  encrypts or decrypts the 64
       bits chunks of in using  the  key  schedule,  putting  the
       result in out.  The enc decides if encryption (BF_ENCRYPT)
       or decryption (BF_DECRYPT) shall be performed.   The  ivec
       must point at an 8 byte long initialization vector.

       The  BF_cfb64_encrypt() function is the CFB mode for Blowfish
 with 64-bit feedback. It  encrypts  or  decrypts  the
       bytes  in in using the key schedule, putting the result in
       out.   The  enc  decides  if  encryption  (BF_ENCRYPT)  or
       decryption (BF_DECRYPT) shall be performed.  The ivec must
       point at an 8 byte long  initialization  vector.  The  num
       must point at an integer which must be initially zero.

       The  BF_ofb64_encrypt() function is the OFB mode for Blowfish
 with 64-bit feedback. It uses the same parameters  as
       the BF_cfb64_encrypt() function, which must be initialized
       the same way.

       The BF_encrypt() and BF_decrypt() functions are the lowest
       level  functions for Blowfish encryption.  They encrypt or
       decrypt the first 64 bits of the vector pointed  by  data,
       using  the  key  key.  They also take each 32-bit chunk in
       host-byte order, which is little-endian  on  little-endian
       platforms  and  big-endian  on big-endian platforms. These
       functions should not be used unless you implement modes of
       Blowfish.   The alternative is to use the BF_ecb_encrypt()
       function.

NOTES    [Toc]    [Back]

       Applications should use the higher level  functions,  such
       as  EVP_EncryptInit(),  instead  of  calling  the blowfish
       functions directly.

RETURN VALUES    [Toc]    [Back]

       None of the functions presented here return any value.

HISTORY    [Toc]    [Back]

       The blowfish functions are available in  all  versions  of
       SSLeay and OpenSSL.

SEE ALSO    [Toc]    [Back]

      
      
       Files: des_modes(7)



                                                      blowfish(3)
[ Back ]
 Similar pages
Name OS Title
des_is_weak_key Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_key_sched Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_quad_cksum Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_crypt Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_string_to_key Tru64 Data Encryption Standard (DES) encryption library routines (Auth)
des_cfb_encrypt OpenBSD DES encryption
des_3cbc_encrypt OpenBSD (non USA) DES encryption
des_ecb2_encrypt OpenBSD DES encryption
des_crypt OpenBSD DES encryption
des_cipher OpenBSD DES encryption
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service