blf_key, blf_enc, blf_dec - Blowfish encryption
#include <blf.h>
void
blf_key(blf_ctx *state, const u_int8_t *key, u_int16_t
keylen);
void
blf_enc(blf_ctx *state, u_int32_t *data, u_int16_t datalen);
void
blf_dec(blf_ctx *state, u_int32_t *data, u_int16_t datalen);
void
blf_ecb_encrypt(blf_ctx *state, u_int8_t *data, u_int32_t
datalen);
void
blf_ecb_decrypt(blf_ctx *state, u_int8_t *data, u_int32_t
datalen);
void
blf_cbc_encrypt(blf_ctx *state, u_int8_t *iv, u_int8_t
*data,
u_int32_t datalen);
void
blf_cbc_decrypt(blf_ctx *state, u_int8_t *iv, u_int8_t
*data,
u_int32_t datalen);
Blowfish is a fast unpatented block cipher designed by Bruce
Schneier.
It basically consists of a 16 times iterated Feistel network. The block
size is 64 bit and the maximum key size is 448 bit.
The blf_key() function initializes the 4 8bit S-boxes and
the 18 Subkeys
with the hexadecimal digits of Pi. The key is used for further randomization.
The first argument to blf_enc() is the initialized
state derived
from blf_key(). The stream of 32-bit words is encrypted in Electronic
Codebook Mode (ECB) and datalen must be even.
blf_dec() is used
for decrypting Blowfish encrypted blocks.
The functions blf_ecb_encrypt() and blf_ecb_decrypt() are
used for encrypting
and decrypting octet streams in ECB mode. The
functions
blf_cbc_encrypt() and blf_cbc_decrypt() are used for encrypting and decrypting
octet streams in Cipherblock Chaining Mode (CBC).
The functions Blowfish_initstate(), Blowfish_expand0state(),
Blowfish_expandstate(), Blowfish_encipher() and
Blowfish_decipher() are
used for customization of the Blowfish cipher, e.g., for the
blowfish
password hashing function.
passwd(1), crypt(3), passwd(5)
Niels Provos <[email protected]>
OpenBSD 3.6 February 13, 1997
[ Back ] |