Шифрование, в дополнение к запутыванию, только усложняет взлом программы.
Это похоже на то, как полиция стоит за дверью вашего хранилища. Это не делает это невозможным; это только усложняет.
Следовательно, когда вы запутываете, у вас все еще есть файлы классов, хотя файлы классов могут быть a.class, а b.class и c.class они все еще присутствуют в jar, и вы можете легко декомпилировать их.
При использовании шифрования, такого как, например, classguard, в банке есть a.classx, b.classx и c.classx. Это означает, что вам нужно пройти дополнительный шаг - сбросить класс из запущенного приложения. Не каждый может что-то сделать, и, конечно, сложнее, чем просто разархивировать класс из файла jar.
На мой взгляд, безопасность должна применяться слоями; Шифрование классов - это еще один уровень, который усложняет взлом java-программы.