Да, можно, наверное, было реализовать и так, беря в расчет два значения md5: исходного файла + того, который зашифрован. В этом случае мы бы тоже гарантировали неизменность обоих файлов на стороне чужого сервера. Но сделали так, получилось интересно, решил поделиться находкой :)
Есть некое SaaS-решение. К нему подключены провайдеры. Ключи генерируются на стороне провайдеров, используя данные, введенные абонентом провайдера: ip, номера договоров, etc. Затем эти ключи передаются к нам.
У себя мы не можем их генерировать, потому что информация об абоненте является коммерческой тайной провайдера.
В то же время мы должны защититься от читинга с ключами со стороны провайдера. Потому что по количеству ключей он платит деньги.
Внутри функции генерируются ключи. При их создании используется в том числе md5 исходного файла. Если что-либо поменять (вырезать), то к нам на сервер придет уже не совсем валидный ключ :)
N.B. Сделайте уже кто-нибудь сайт «Секреты Nginx'а» =)
У себя мы не можем их генерировать, потому что информация об абоненте является коммерческой тайной провайдера.
В то же время мы должны защититься от читинга с ключами со стороны провайдера. Потому что по количеству ключей он платит деньги.
Ну а вообще, кто как. Решение не совсем красивое, ну так и задача не совсем часто встречающаяся в жизни, согласен.