3

It looks like the library is treating the string as the key to Blowfish, which has a veriable key size; the way the keysetup is done (with a cyclical use of the key bytes, see more details on the Wikipedia page) implies that key $k$ of length $n$ and key $k||k$ of length $2n$ have the same expanded key and thus an equivalent encryption/decryption function. ...


2

The bcrypt KDF does not use the entire block cipher as-is. It relies on a modified version of its key schedule. This is important because blowfish, unlike many other ciphers, has an extremely expensive key schedule. It requires about four kilobytes of fast memory, compared with SHA-1 which is so light that it can almost be computed entirely in x86 registers. ...


1

Why do we use EnhancedHashPassword in nuGet library and chose an SHA algorithm like this? The Bcrypt uses a 448-bit key that makes a 56-byte password limit. Some libraries can drop parts longer than 56-byte of the passwords or don't accept it. This is not good, therefore before bcrypt a hash is applied to the password. This is the EnhancedHashPassword ...


1

A good way to find out what the authors meant would probably be reading their original paper where they introduced bcrypt : https://www.usenix.org/legacy/event/usenix99/provos/provos.pdf I think comparing bcrypt with e.g. pbkdf2 is not quite fair for bcrypt since it was an earlier construction and ideas like tweakable number of iterations are actually ...


1

No. You're already assuming that chosen plaintext attacks should be considered. A known IV together with your ability to arbitrary encrypt known plaintexts is enabling exactly that attack vector to the block cipher. These attacks are all attacks on the block cipher, and Blowfish is considered rather secure, if deprecated because - among others - the block ...


1

I agree that you shouldn't use Blowfish. Whether Twofish or Threefish, depends on the application. Of course, if there is hardware support for AES, then you should use AES. A good application for Threefish would be an embedded controller using a micro with no AES hardware. It has no S-Boxes, so it's ROM needs are fairly small. If you forego the tweak ...


Only top voted, non community-wiki answers of a minimum length are eligible