Симметричные алгоритмы не могут дать свойство неотказности, которое дают схемы асимметричной подписи, то есть получатель сообщения не может доказать, что он сам не создал сообщение, поскольку они должны знать схему.
Тем не менее, код аутентификации сообщения (MAC) может дать вам то, что вы хотите: и отправитель, и получатель имеют общий ключ, отправитель вычисляет MAC с секретоми добавляет его к сообщению, и получатель вычисляет тот же MAC-адрес и сравнивает его с полученным сообщением.
В то время как наиболее часто используемый тип MAC ( HMAC ) основан на хэш-функциях,Есть также такие, которые основаны на блочном шифре, таком как AES, например CBC-MAC (это похоже на CBC, но с нулевым вектором инициализации и использованием только последнего блока в качестве вывода).(Как говорит noloader, CBC-MAC - не самый безопасный способ сделать это, используйте другие режимы.)
Вы должны использовать аутентификацию сообщений в большинстве случаев, когда вы используете шифрование, так как многие схемы шифрования уязвимы дляатаки с использованием открытого текста.
В Java MAC можно вычислить (и проверить) с помощью класса javax.crypto.Mac .