
Security
bcrypt Stops Reading at Byte 72: The 18-Subkey Ceiling That Let a 52-Character Username Stand In for an Okta Password
bcrypt silently discards every input byte past 72 because Blowfish's P-array holds exactly 18 32-bit subkeys, and when Okta fed it the unseparated string userId + username + password as a cache key, any username of 52+ characters pushed the password entirely out of the hashed region - this walks the mechanism from the 1999 paper and the OpenBSD source (including the separate mod-256 length wraparound that forced the $2b$ version bump) to the 2024 advisory and the fixes that actually hold.
















































