Почему результат шифрования XML NodeJS не может быть расшифрован Apache Santuario?Apache

Ответить
Anonymous
 Почему результат шифрования XML NodeJS не может быть расшифрован Apache Santuario?

Сообщение Anonymous »


У меня есть заданный XML Content для шифрования в NodeJS.

... Документ XML необходимо зашифровать с помощью общедоступного сертификата. Третья сторона использует для расшифровки библиотеку Java Apache Santuario. К сожалению, я не могу использовать для этого Java, и вместо этого мне приходится использовать NodeJS для шифрования.

Я пытался зашифровать свой документ с помощью xml-шифрования модуля NodeJS, но стороннему сервису не удалось расшифровать выдаваемые результаты.

Пример кода Java Apache Santuario для шифрования, который они предоставляют, выглядит следующим образом:

public void encryptXMLDocument(Document xmlDocToEncrypt, сертификат шифрованияCertificate) выдает исключение { пытаться { Ключ _sessionKey = GenerateDataEncryptionKey(); XMLCipher _keyCipher = XMLCipher.getInstance(XMLCipher.RSA_v1dot5); _keyCipher.init(XMLCipher.WRAP_MODE, шифрованияCertificate.getPublicKey()); EncryptedKey _encryptedKey = _keyCipher.encryptKey(xmlDocToEncrypt, _sessionKey); XMLCipher _dataCipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES); _dataCipher.init(XMLCipher.ENCRYPT_MODE, _sessionKey); EncryptedData _encryptedData = _dataCipher.getEncryptedData(); KeyInfo _keyInfo = новый KeyInfo (xmlDocToEncrypt); _keyInfo.add(_encryptedKey); _encryptedData.setKeyInfo(_keyInfo); _dataCipher.doFinal(xmlDocToEncrypt, xmlDocToEncrypt.getDocumentElement(), true); System.out.println(xmlDocToEncrypt); } catch (Исключение е) { System.out.print("Не удалось зашифровать документ :: " + e); throw new Exception("Не удалось зашифровать документ"); } } Чтобы зашифровать это, мне предоставлен общедоступный сертификат .cer. Результат должен выглядеть следующим образом:

(...short base64...) (...long base64...) Модуль NodeJS xml-encryption, который, по-видимому, является единственной доступной реализацией NodeJS xmlenc, не поддерживает шифрование Element xml, поэтому выходные данные не оборачиваются Элемент Parent и включает X509Data в элементе KeyInfo, который не является частью формата, требуемого службой. Он также помещает CipherValue в одну строку, и для работы расшифровки необходимы новые строки. Поэтому я изменил узел-модуль xml-encryption, чтобы он мог выполнять все эти функции. В основном просто изменения формата.

По большей части результат выглядит правильно, но мой XML не может быть расшифрован сторонней службой. Единственное заметное различие между моими значениями и примером службы заключается в том, что оба значения CipherValue в моих результатах всегда на 3 строки короче, чем в примере. Кроме того, KeyInfo CipherData имеет 2 знака равенства в конце своего значения, в отличие от примера.

(...short base64 на 3 строки короче, с '==' в конце...) (...длинный base64 на 3 строки короче...) Я не уверен, в чем я ошибаюсь. Возможно, кто-то, кто лучше разбирается в криптографии, знает, чего мне не хватает. Я подозреваю, что библиотека xml-encryption NodeJS делает что-то отличное от приведенного выше примера библиотеки Apache.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»