Corrected. It said before that ivec had to be initialised to zero,
which isn't true. What is true, however, is that SSH assumes it is.
This commit is contained in:
parent
87351c586e
commit
1bb30673f9
@ -57,28 +57,31 @@ everything after the first 64 bits is ignored.
|
|||||||
|
|
||||||
The mode functions BF_cbc_encrypt(), BF_cfb64_encrypt() and BF_ofb64_encrypt()
|
The mode functions BF_cbc_encrypt(), BF_cfb64_encrypt() and BF_ofb64_encrypt()
|
||||||
all operate on variable length data. They all take an initialisation vector
|
all operate on variable length data. They all take an initialisation vector
|
||||||
B<ivec> which must be initially filled with zeros, but then just need to be
|
B<ivec> which needs to be passed along into the next call of the same function
|
||||||
passed along into the next call of the same function for the same message.
|
for the same message. B<ivec> may be initialised with anything, but the
|
||||||
|
recipient needs to know what it was initialised with, or it won't be able
|
||||||
|
to decrypt. Some programs and protocols simplify this, like SSH, where
|
||||||
|
B<ivec> is simply initialised to zero.
|
||||||
BF_cbc_encrypt() operates of data that is a multiple of 8 bytes long, while
|
BF_cbc_encrypt() operates of data that is a multiple of 8 bytes long, while
|
||||||
BF_cfb64_encrypt() and BF_ofb64_encrypt() are used to encrypt an variable
|
BF_cfb64_encrypt() and BF_ofb64_encrypt() are used to encrypt an variable
|
||||||
number of bytes (the amount does not have to be an exact multiple of 8). The
|
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
|
purpose of the latter two is to simulate stream ciphers, and therefore, they
|
||||||
need the parameter B<num>, which is a pointer to an integer where the current
|
need the parameter B<num>, which is a pointer to an integer where the current
|
||||||
offset in B<ivec> is stored between calls. This integer must be initialised
|
offset in B<ivec> is stored between calls. This integer must be initialised
|
||||||
to zero when B<ivec> is filled with zeros.
|
to zero when B<ivec> is initialised.
|
||||||
|
|
||||||
BF_cbc_encrypt() is the Cipher Block Chaining function for Blowfish. It
|
BF_cbc_encrypt() is the Cipher Block Chaining function for Blowfish. It
|
||||||
encrypts or decrypts the 64 bits chunks of B<in> using the key B<schedule>,
|
encrypts or decrypts the 64 bits chunks of B<in> using the key B<schedule>,
|
||||||
putting the result in B<out>. B<enc> decides if encryption (BF_ENCRYPT) or
|
putting the result in B<out>. B<enc> decides if encryption (BF_ENCRYPT) or
|
||||||
decryption (BF_DECRYPT) shall be performed. B<ivec> must point at an 8 byte
|
decryption (BF_DECRYPT) shall be performed. B<ivec> must point at an 8 byte
|
||||||
long initialisation vector, which must be initially filled with zeros.
|
long initialisation vector.
|
||||||
|
|
||||||
BF_cfb64_encrypt() is the CFB mode for Blowfish with 64 bit feedback.
|
BF_cfb64_encrypt() is the CFB mode for Blowfish with 64 bit feedback.
|
||||||
It encrypts or decrypts the bytes in B<in> using the key B<schedule>,
|
It encrypts or decrypts the bytes in B<in> using the key B<schedule>,
|
||||||
putting the result in B<out>. B<enc> decides if encryption (B<BF_ENCRYPT>)
|
putting the result in B<out>. B<enc> decides if encryption (B<BF_ENCRYPT>)
|
||||||
or decryption (B<BF_DECRYPT>) shall be performed. B<ivec> must point at an
|
or decryption (B<BF_DECRYPT>) shall be performed. B<ivec> must point at an
|
||||||
8 byte long initialisation vector, which must be initially filled with zeros.
|
8 byte long initialisation vector. B<num> must point at an integer which must
|
||||||
B<num> must point at an integer which must be initially zero.
|
be initially zero.
|
||||||
|
|
||||||
BF_ofb64_encrypt() is the OFB mode for Blowfish with 64 bit feedback.
|
BF_ofb64_encrypt() is the OFB mode for Blowfish with 64 bit feedback.
|
||||||
It uses the same parameters as BF_cfb64_encrypt(), which must be initialised
|
It uses the same parameters as BF_cfb64_encrypt(), which must be initialised
|
||||||
|
Loading…
x
Reference in New Issue
Block a user