Похоже, вам нужно подписать параметры запроса, а не зашифровать их. Вы можете попробовать что-то вроде этого;
1) Создайте строку данных, которые вы хотите защитить с помощью цифровой подписи, например, если ваш URL-адрес;
http://www.example.com/doCourse?userid=123&courseid=abc
и вы хотите защитить параметры userid и courseid, которые вы создаете;
courseid = ABC & = 123 идентификатор пользователя
Обратите внимание, что в таких случаях обычно создается строка с параметрами в алфавитном порядке.
2) Используйте код аутентификации сообщения с криптографической хеш-функцией, такой как SHA-1, для генерации хеша вашей строки.
Сделайте это с;
Key key = ..... //You need to agree a key with the other party.
String string = ..... //The data you want to sign eg "courseid=abc&userid=123"
Mac mac = Mac.getInstance("HMAC-SHA1");
mac.init(key);
byte[] result = mac.doFinal(string.getBytes("UTF-8");
MAC обычно использует секретный ключ (который вы заранее согласовываете с другой стороной) для генерации хеша данных.
3) Base64 кодирует, затем URLE кодирует результат и включает его в перенаправление в качестве параметра (назовите его чем-то вроде «signature»).
4) Другой участник выполняет те же действия, что и вы, он генерирует строку, использует MAC для создания хэша, кодирует base64 и кодирует URL. Затем они сравнивают подпись в запросе с той, которую они сгенерировали. Если это то же самое, то параметры не были изменены. Если хеш отличается, то пользователь, должно быть, изменил их.
Возможно, вы также захотите включить криптографический одноразовый номер в запрос на предотвращение атак воспроизведения . Если вы используете одноразовый номер, убедитесь, что вы включили параметр и значение одноразового номера в строку, которую вы используете для генерации подписи (гарантирует, что пользователь не сможет изменить одноразовый номер).
Преимущества перед шифрованием
- URL-адреса не скрываются за счет поддержки этого в веб-приложениях.
- Безопасность можно обеспечить с помощью простого фильтра перед веб-приложением, который просто проверяет подписи.
- Вы можете сказать, изменил ли пользователь данные, что нельзя гарантировать только шифрованием. С TDES пользователь может изменить зашифрованный текст и случайно создать действительный, но другой открытый текст.