Как шифровать поля в документе XML с PHP и RSA / Triple DES

StackOverflow https://stackoverflow.com/questions/3085785

Вопрос

Я разрабатываю приложение для школ в Южной Африке, который требуется представить данные в формате XML в государственный ИТ-агентство по статистической обработке. В настоящее время я создаю файлы XML с помощью PHP DOMDocument класс.

Мои файлы прошли процесс проверки первого этапа. Следующим этапом является реализация шифрования и сжатия файлов XML. Сжатие - простая гzip, поэтому там нет беспокойства.

Спецификационный документ указывает на то, что используются как шифрование RSA (я получу ключевые ключи RSA для реализации в программное обеспечение), а также некоторую форму симметричного шифрования, такого как Triple DES (хотя это «пример» и любой из алгоритмов в http://www.w3.org/TR/xmldsig-core может быть реализован). Если я понимаю это правильно, шифрование RSA является кодировать симметричный ключ, который используется для фактического шифрования полей.

Документ спецификации также говорит, что «шифрование файла XML может быть выполнено либо на весь файл, либо на определенных элементах». Я не совсем уверен, что проще, на этом этапе и так отвечает на либо хватит!

Предполагается, что требуется, чтобы зашифровать содержимое тегов XML, а не имена (как в http://www.w3.org/TR/xmlenc-core/#sec-eg-Element-Content-Character).

Я прошу прощения, если это кажется расплывчатым. В настоящее время все у меня есть информация, и контакты в агентстве рады сказать, что образцы кода (VisualBasic .NET) должны объяснить все ... Если вы хотите изучить этот код, вы можете взглянуть на Документ слов в следующем zip-файле, от около 213 внутрь. http://www.sita.co.za/doe_lurits/devs-00118%20REV%201.2%2012%20jan%202009.zip.

Если кто-то может помочь мне в правильном направлении, я был бы признателен.

Это было полезно?

Решение

Вы должны просто шифровать файл XML, используя шифрование XMLSEC. Следующая библиотека должна обрабатывать все детали для вас,

http://code.google.com/p/xmlseclibs/

Другие советы

Видеть openssl_encrypt Для симметричного шифрования и openssl_public_encrypt/openssl_private_decrypt для асимметричного шифрования.

Похоже, вы можете либо шифровать весь документ или только содержимое определенных «чувствительных» тегов. Шифрование всего документа, вероятно, будет самым простым способом.

Что касается вещей RSA / 3DES - вы почти наверняка правы. Вы сможете зашифровать документ с 3DES, затем шифровать ключ 3DES с их открытым ключом RSA.

Итак, кажется, что вам нужно сделать, это просто генерировать документ, застегивает его, затем шифрует результаты на молнии с 3DES.

Симметричный зашифрованный-документ-Plus-Plus-Pk-Pk-Chryfrypted-архитектура ключей является по существу PGP. Откроется бы от OpenPGP для вашего клиента?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top