При использовании tcp/ip разумно убедиться, что поток не поврежден в пути «случайно», поэтому не беспокойтесь об этом.
Если вы беспокоитесь о безопасности, обратите внимание, что Md5 небезопасен, любой может вычислить контрольную сумму md5, для подписи вам нужен какой-то секретный ключ или pki-решение.
Обратите внимание, что «подписание» - это просто аутентификация, фактическое сообщение все еще может быть прочитано кем-то еще. Вам требуется шифрование + аутентификация, если вы также хотите, чтобы контент был секретным.
Простым решением является отправка ваших данных через ssl-socket.
Я бы рекомендовал обратиться к bouncycastle за хорошей поддержкой шифрования.
Если сообщения транспортируются каким-либо другим способом (и, возможно, им придется обрабатывать другие системы, хранящиеся в файлах, ftp: ed, mq: ed, xml-ed и т. Д. И т. Д.), Вы можете сериализовать сообщение на byte [] и подписывать их с помощью подписчика в org.bouncycastle.crypto.signers и вычислять и добавлять подпись в качестве байта [] после фактического сообщения.
В этом случае вам нужно будет использовать формат сообщения, чтобы вы могли разделить и извлечь как данные, так и подпись, а затем пересчитать подпись (используя открытый ключ отправителя) и убедиться, что полученный и рассчитанные подписи совпадают.
Существует несколько стандартов для этого: S/MIME, pgp, PKCS # 7RFC 3369, и они, вероятно, лучше, чем все, что вы или я можем придумать, поэтому исследуйте их.
Если вы используете RMI, вы можете использовать безопасный rmi для Google - например, используйте фабрику сокетов SSL. Если вы просто хотите аутентификацию (cleartext + signature), вы даже можете написать фабрику для проверки подлинности ...
Если у вас нет информации об обеспечении безопасности, самым простым решением может быть создание безопасного туннеля с использованием VPN или ssh, и отправляйте свои сообщения, используя это.
О, я забыл, WS-Security делает это только для веб-сервисов/мыла, если это то, что вы используете. – KarlP