XML-подпись: Как вычислить значение обзора?

У меня есть XML как это

<?xml version="1.0" encoding="utf-8"?>
<foo>
  <bar>
    <value>A</value>
  </bar>
  <bar>
    <value>B</value>
  </bar>
  <baz>
    <value>C</value>
  </baz><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>WqpRWHxXA0YgH+p3Sxy6hRo1XIk=</DigestValue></Reference></SignedInfo><SignatureValue>EoRk/GhR4UA4D+8AzGPPkeim1dZrlSy88eF73n/T9Lpeq9IxoGRHNUA8FEwuDNJuz3IugC0n2RHQQpQajiYvhlY3XG+z742pgsdMfFE4Pddk4gF1T8CVS1rsF7bjX+FKT/c8B2/C8FNgmfkxDlB/ochtbRvuAGPQGtgJ3h/wjSg=</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIB8zCCAVygAwIBAgIQgfzbrIjhLL9FobStI2ub3zANBgkqhkiG9w0BAQQFADATMREwDwYDVQQDEwhUZXN0ZUFjbjAeFw0wMDAxMDEwMDAwMDBaFw0zNjAxMDEwMDAwMDBaMBMxETAPBgNVBAMTCFRlc3RlQWNuMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDO+yAZ8/qJbhSVH/+2wMmzix3jM/CExb6sTgaiPwe6ylcHgF45zeQDq06OSJZCSns34em/ULINZddDf8z0b9uk/2sOGr1pYqsunLLBvw2FkvWJQDkhx2SzCm8v4xGX2kyXNbjiY/K56oPOMjpayKoAFnnvk7p2iFAxNZK/6lpZ7wIDAQABo0gwRjBEBgNVHQEEPTA7gBCOOHcajwnATYZ0t6w7LVU0oRUwEzERMA8GA1UEAxMIVGVzdGVBY26CEIH826yI4Sy/RaG0rSNrm98wDQYJKoZIhvcNAQEEBQADgYEABL9Qhi6f1Z+/t8oKXBQFx3UUsNF9N2o4k6q1c3CKZYqx2E/in+nARIYRdh5kbeLfomi6GIyVFeXExp8crob3MAzOQMvXf9+ByuezimMPIHDvv0u3kmmeITXfoZrHCDxLoWWlESN1owBfKPqe7JKAuu9ORDC0pUiUfCHWxCoqNos=</X509Certificate></X509Data></KeyInfo></Signature>
</foo>

Как стоимость обзора (WqpRWHxXA0YgH+p3Sxy6hRo1XIk =) в ссылке создается? Я имею в виду, как я могу вычислить это значение вручную?

23
задан Luke Girvin 20 October 2017 в 10:50
поделиться

1 ответ

Команда IL, доступная (isinst), возвращает либо объект соответствующего типа, либо значение null, если такое преобразование невозможно. И это не создает исключения, если преобразование невозможно.

Учитывая, что оба "is" и "as" тривиальны для реализации. Я бы не стал утверждать, что "is" реализуется как "as" в этом случае, просто то, что лежащая в основе инструкция IL позволяет произойти обоим. Теперь, почему компилятор не может оптимизировать "is", а затем "as" в один вызов isinst, это другое дело. Вероятно, в этом случае он связан с переменной областью (даже если к тому времени, когда это IL, область на самом деле не существует)

Изменить

Во вторых мыслях нельзя оптимизировать "is", за которым следует "as" в один вызов isinst, не зная, что обсуждаемая переменная не подлежит обновлению из других потоков.

Предполагается, что x является строкой:

//Thread1
if(x is string)

//Thread2
x = new ComplexObject();

//Thread1
    y = x as string

Здесь y должно быть равно null.

-121--1392289-

Я не уверен, хотите ли вы, чтобы ваши ученики построили этот инструмент в питоне или вы хотите построить инструмент самостоятельно, чтобы они могли использовать его, например, визуализировать изменения в поведении функций, поскольку входные данные варьируются. Если последнее, то, возможно, не важно, на каком языке инструмент реализован, поэтому я упомяну одно приложение, которое, я думаю, подходит под ваше краткое описание почти идеально.

Помимо построения графика, я в идеале хотел бы визуализировать уравнение, введенное пользователем [например, y = (x ^ 2 )/3] в красиво отформатированном стиле - идеально обновляется в реальном времени при вводе пользователем своего выражения.

Бесплатное приложение под названием " Grapher ". Поставляется в комплекте с Mac OS X (10.4 и выше). Тот факт, что это Mac-only, может быть нарушителем сделки, все же я хотел бы упомянуть об этом на случай, если ваши ученики используют Mac в компьютерной лаборатории, как и многие школьники. (Примечание: не путать с "AP Grapher" - это приложение Mac, но это беспроводной поиск точек доступа или что-то подобное).

Основной набор функций: полностью интерактивный, введите уравнение (интуитивно - использует подмножество привязок mac-ключа) для создания довольно сложных уравнений из исчисления, линейной алгебры, статистики, дифференциальных уравнений и т.п. После ввода, наряду с диапазоном значений, уравнение красиво нанесено на график. Grapher имеет как 2D, так и 3D режим. Вот снимок экрана главного окна приложения Grapher, показывающий уравнение, построенное в 3D.

Существует ли версия Windows? Я слышал слухи, что один выходит, но я не смог найти какую-либо окончательную информацию об этом из нескольких быстрых веб-поисков.

-121--3909713-

Я столкнулся с этой проблемой сам: я создавал XML-подпись в Java и проверял в .NET, и проверка всегда не удалась. В моем случае причиной была функция "печать XML в файл" XMLWrite.m (да, в MATLAB *), которая "довольно печатала" XML, вставляя вкладки, пробелы и новые строки, как она считала нужным. Поскольку они являются частью документа,естественно, не удалось выполнить проверку (в Java это тоже не удалось). Глядя на твой источник, это может случиться с тобой. Используйте трансформатор (javax.xml.transform. *) для правильной сериализации DOM без изменения содержимого.

* Вы знали, что MATLAB также понимает Java? Можно просто ввести инструкции Java в консоль интерпретатора, и они будут выполняться как собственный m-код.

3
ответ дан 29 November 2019 в 02:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: