Fix DH-BLOWFISH, now it works.

The mistake was:

DH#pub_key
The per-session public key (an OpenSSL::BN) matching the private key. This needs to be passed to #compute_key.

DH#public_key
Returns a new DH instance that carries just the public information, i.e. the prime p and the generator g, but no public/private key yet. Such a pair may be generated using #generate_key!. The "public key" needed for a key exchange with #compute_key is considered as per-session information and may be retrieved with DH#pub_key once a key pair has been generated. If the current instance already contains private information (and thus a valid public/private key pair), this information will no longer be present in the new instance generated by #public_key. This feature is helpful for publishing the Diffie-Hellman parameters without leaking any of the private per-session information

So DH#pub_key actually gets us the public key, while public_key just serves us public information.