問題タブ [canonicalization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2209 参照

xml - 包括的正規化による XML デジタル署名

XML デジタル署名のルーチンを実装しようとしていますが、署名する情報のハッシュを正しく計算できます。ただし、署名する実際の文字列を作成できないため、署名自体に問題があります。

今私はこれを持っています:

CRLF の代わりに CR のみを使用します。インデント用のスペースなし (投稿のタグ間にスペースがある場合は、CR があります)

有効な署名を計算するための提案はありますか?

PD Canonicalization Algorithm を EXCLUSIVE に変更しましたが、動作しますが、要件は INCLUSIVE を使用することです。

よろしくお願いします。

0 投票する
2 に答える
707 参照

java - JavaでWSDLファイルを正規化する方法は?

2つのWSDLファイルの違いを見つける必要があります。私はここのようにそれらをきれいに印刷することから始めましたがcomplexType、(愚かな理由で)定義された2つのファイルに同じもの(たとえばs)が異なる順序であることがわかります。ファイルをさらに正規化したいので、後で標準などを使用diffして違いを見つけることができます。

WSDLの標準形が定義されているかどうかはわかりません。CanonicalXMLがあることは知っていますが、もう少し進んで、順序が重要でないすべてのものを並べ替える必要があります。

0 投票する
2 に答える
3280 参照

java - グアバを使用した私の理想的なキャッシュ

過去数週間、グアバのMapMakerを使用して、理想的なキャッシュの実装を見つけようとしてきました。私の思考プロセスに従うために、ここここで私の前の 2 つの質問を参照してください。

学んだことを踏まえて、次の試みはソフト値を捨てて maximumSize と expireAfterAccess を使用することです。

どこ

ただし、私がまだ取り組んでいる残りの 1 つの問題は、この実装では、到達可能性が高い場合でも、時間切れになるとオブジェクトが削除されることです。これにより、同じ UID を持つ複数のオブジェクトが環境内に浮かぶ可能性がありますが、これは望ましくありません (私が達成しようとしているのは、正規化として知られていると思います)。

したがって、唯一の答えは、データオブジェクトがまだメモリ内にあるかどうかを確認できるインターナーとして機能する追加のマップを用意することです。

load 関数は次のように修正されます。

ただし、キャッシュに 1 つではなく 2 つのマップを使用するのは効率が悪いようです。これにアプローチするより洗練された方法はありますか?一般的に、私はこれを正しい方法で行っていますか、それともキャッシュ戦略を再考する必要がありますか?

0 投票する
1 に答える
882 参照

c# - 正規化のためのC#でのデフォルトの名前空間でのXpathの使用

生成されたXMLにC14N変換を適用しようとしています。LINQを使用してノードを取得して正規化を実行することはできないようです。そのため、DOMを使用して「古い学校」に行く必要がありますが、デフォルトの名前空間に違反していると思います。

これが私のコードのサンプルです。

そして私のXML:

私はこの地域の他のいくつかのトピックを読み、この宝石に出くわしましたが、それは問題を解決していません。

XPath Visualiserを使用すると、必要なノードを選択する必要があることが示されますが、コードでノードを選択できません。

0 投票する
1 に答える
1787 参照

c# - XML Canonicalizationは、変換された出力で空の要素を返します

XPathステートメントを使用してXmlDocumentからノードを選択する方法を尋ねる関連記事があります。

SelectNodesを機能させる唯一の方法は、デフォルト以外の名前空間 "x"を作成し、XPathステートメントでノードを明示的に参照することでした。

これは機能し、ノードリストを提供しますが、正規化では、出力で選択したノードにコンテンツを生成できません。

XmlDsigExcC14NTransformを使用して名前空間を指定しようとしましたが、同じ出力が生成されます。

以下は、(関連する投稿のXMLを使用して)生成されたxml出力の例です。

0 投票する
1 に答える
4094 参照

java - すべての Document ノードの NodeList を手動で作成する

現在NodeList、すべてのドキュメント ノードを (ドキュメント順に) 手動で生成しています。これを取得する XPath 式は次のとおりNodeListです。

DOM を手動でウォークし、ノードを収集するための私の最初の試み ( aに委譲するNodeSetプリミティブな実装です):NodeListList

walkRecursive(doc, nodes)where docis theorg.w3c.Documentnodesa (まだ空)を呼び出して再帰を開始しますNodeSet

このプリミティブ XML ドキュメントを使用してこれをテストしました。

たとえば、手動で作成NodeSetしたものとNodeList、最初に述べた XPath 式によって生成されたものを正規化し、2 バイトを 1 バイトずつ比較すると、結果は等しくなり、問題なく動作するように見えます。

しかし、2 つの s を反復処理してNodeListデバッグ情報を出力すると (typeString単純に文字列表現を生成します)

次に、XPath で生成された次の出力を受け取りますNodeList

そして、これは手動で生成されたものNodeListです:

したがって、ご覧のとおり、最初の例では NodeListNodeに XML 名前空間用の が追加で含まれています。

今私の質問:

a) xml-names11を正しく解釈すれば、xmlns:xml 宣言は必要ありません。

プレフィックス xml は、定義上、名前空間名http://www.w3.org/XML/1998/namespaceにバインドされています。宣言する必要はありませんが、宣言する必要はありません。また、宣言を解除したり、他の名前空間名にバインドしたりしてはなりません。他のプレフィックスをこの名前空間名にバインドしてはならず、デフォルトの名前空間として宣言してはなりません。

私は正しいですか?(少なくとも c) その方向へのヒント)

b) しかし、なぜ XPath 評価はそれを追加するのでしょうか?

c) これはXML 正規化で問題を引き起こす可能性がありますが、正規化中は名前空間の宣言を省略する必要があります。xmlこれを間違える(Java)実装を知っている人はいますか?


編集:

「xml」名前空間ノードを含む XPath 式を評価するために使用したコードは次のとおりです。

0 投票する
1 に答える
7065 参照

java - Javaで正規化マッピングを実装するには?

私は現在、自分の小さな ORM を展開していますが、データベースから同じエンティティを複数回ロードするのを防ぐために、正規化マッピングを作成するタスクに直面していることに気付きました。

私の現在のアプローチは、を使用することHashMap<Object, WeakReference<Object>>です。キーはマップされたデータベース エンティティの主キー (ArrayList<Object>複合キーの場合は ) で、値はWeakReference<Object>です。

私の主な問題は、マップをクリーンアップする方法ですか? オブジェクトが使用されなくなると、マップ内の弱い参照が移動nullし、次のルックアップでのみこれを発見します (または、オブジェクトを再度ルックアップしない場合は決して発見しません)。弱い参照ReferenceQueueがクリアされたときに に登録し、何かを調べるたびにそのキューをチェックすることができます。WeakReferenceただし、参照がクリアされても、どのオブジェクトがクリアされたかについてのヒントは得られないため、キーをマップに格納するためにサブクラス化する必要があると思われるため、参照がクリアされた後に削除できます。

これは進むべき道ですか、それともこれを実装する簡単な方法はありますか?

0 投票する
1 に答える
134 参照

xml - 2 つのサックス パーサーをパイプしますか?

次の実装タスクがあり、それを解決する方法がわかりません。

一部の終了 endElement() でハッシュサムをチェックする xml 形式用のSAX ベースの構文チェッカーがあります。このハッシュサムは、コンテンツの読み取り中に MessageDigest を更新する一種のフィルタリング InputStreamを使用して構築されます。SAX-syntaxchecker は、この入力ストリームをその InputSource として使用します。

問題 (私の仕事) は、入力 xml の一部の正規化された部分に対してハッシュサムを構築する必要があることです( http://www.w3.org/TR/xml-c14nを参照)。

ここで注意が必要なのは、 SAX を使用して入力を正規化する Canonicalizer があることです。(属性とノードなどを区別するために現在のコンテキストを認識する必要があるため、SAX を使用します)

その Canonicalizer を再利用したいのですが、これら 2 つの SAX パーサーを組み合わせる方法がわかりません。

ある種のパイプラインが必要だと思います:

InputFile -> Canonicalizer -> HashCalculation-InputStream -> SyntaxChecker.

それを達成するためのアイデア/参考文献はありますか? ティア。

0 投票する
1 に答える
154 参照

php - 正規化/正規化による URL のマッチング

等しい URL を正規化して一致させるこのソリューションを見つけましたが、もっとエレガントなものがあるかどうか知りたいのですが、PHP には URL 正規化機能がありませんか?

0 投票する
1 に答える
428 参照

perl - XML::LibXML で XML フラグメントを正規化しようとしているときにエラーが発生しました

結果の XML で自己終了ノードが出力されないように、XML フラグメントを正規化しようとしています。(消費システムの制約により、ノード<test />をストリーミングしたい)。<test></test>

XML::LibXML::Node で toStringC14N() メソッドを使用して同じことを達成しようとしましたが、次のエラーが発生し、Google からも助けが得られないようです。

出力:

LibXML.cの次のメソッドまで、エラーを追跡することしかできませんでした

xmlDocDumpMemory(self, &result, &len);

「toString()」がうまく機能しているように見えるので、私が間違っていることについてはわかりません。

perl v5.8.8 & XML::LibXML バージョン 1.88 を使用しています