Поясню сразу, чего я хочу. Я работаю над IM-системой, и решил прикрутить к ней шифрование на стороне клиента. Таким образом, данные будут зашифрованы не только в БД, но и передаваться по сети будут в шифрованном виде. Я отыскал этот алгоритм, он мне понравился. Авторы пишут, что он очень надёжный. Это очень простой алгоритм шифрования, усиленный MD5 подписями. В самом деле, там присутствует функция MD5 на JS и MD5-хэш ключа передаётся одним из аргументов основной шифрующей функции.
Я взял JS код. Алгоритм пока такой (возможно, буду улучшать): на клиента подгружаются для каждой шифрованной комнаты кодированные ключом сэмплы заранее известного отрывка текста (его можно увидеть через просмотр JS кода). Вообще это не очень хорошо, но так работает быстрее. Когда у пользователя просят ввести ключ, скрипт кодирует этот сэмпл и сверяет с шифрованным сэмплом комнаты. Если совпадает, тогда подгружаются зашифрованные сообщения с сервера и раскодируются "на лету". Ну и запись идёт аналогично: сначала шифруем, потом уже отправляем на сервер.
И всё бы хорошо...
Но я захотел сделать функцию смены ключа. А для этого надо расшифровать, а затем снова зашифровать все сообщения комнаты, но уже с
новым ключом. И я рассудил, что лучше это сделать на сервере... Вот и мучаюсь теперь, пытаясь этот алгоритм на PHP портировать.
Переносил аккуратно, но видимо где-то навалял. Или какие-то тонкости языка всё портят...