Посмотрите библиотеку javax.crypto или bouncyCastle.
Оба предоставляют криптографические примитивы, также для шифрования. В зависимости от того, насколько безопасным вы хотите его иметь, вы можете использовать симметричную или ассиметричную криптографию. Тем не менее, также подумайте об управлении ключами заранее. Где вы храните свой закрытый / общий ключ.
Если это клиент-сервер, лучшим способом было бы использовать ассиметричное шифрование (например, RSA, Elliptic Curve) и дать каждому пользователю сертификат, подписанный ключом сервера (обратите внимание, это TLS (ранее назывался SSL). )). Таким образом, вы можете проверить подлинность входа пользователя. Однако вы не запрещаете настраиваемые клиенты, так как пользователь должен, чтобы каждый мог просто скопировать сертификат.
На практике довольно сложно предотвратить создание пользовательских клиентов.