If I were to build a messaging app for Hive it would not store the content on the blockchain to avoid bloating it. What I would do is establish a connection between users by verifying that the messages are signed using the current public keys . The only contact with the blockchain would be to verify that the messages are signed with the correct keys on a P2P second layer.
The actual encryption key would be established using the Diffie-Hellman protocol.