Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 由于xml签名而导致的错误_Java_Xml Signature - Fatal编程技术网

Java 由于xml签名而导致的错误

Java 由于xml签名而导致的错误,java,xml-signature,Java,Xml Signature,我有一个xml文档。当我使用javalibs打印文档时,我得到了正确的xml输出。然后,我使用xmlsignatures对xml文档进行签名。签名后,我尝试再次打印文档。但这一次,文档的打印方式使所有元素都变得混乱。所以我想知道xml签名是否会修改xml文档?如果是,为什么?签名可以通过规范化修改您的结构。这是必要的,因为xml可以有不同的有效表示形式。为了验证签名,所有各方必须就一个规范化表示达成一致。像@Mat一样,我想了解您所说的混乱的更多细节。 尽管如此,如果您选择了封装(或明显分离)签

我有一个xml文档。当我使用javalibs打印文档时,我得到了正确的xml输出。然后,我使用xmlsignatures对xml文档进行签名。签名后,我尝试再次打印文档。但这一次,文档的打印方式使所有元素都变得混乱。所以我想知道xml签名是否会修改xml文档?如果是,为什么?

签名可以通过规范化修改您的结构。这是必要的,因为xml可以有不同的有效表示形式。为了验证签名,所有各方必须就一个规范化表示达成一致。

像@Mat一样,我想了解您所说的混乱的更多细节。 尽管如此,如果您选择了封装(或明显分离)签名方法,则不应更改原始文档的结构。
相反,选择信封方法确实会改变原始文档,方法是将其包装在包含签名的容器中。

如果“混杂”表示标记的显示顺序不同,这并不意外。XML文档不是“有序的”。@Mat您能更详细地解释一下吗?我的意思是,如果想要从元素中检索值,那么我必须面对问题,因为标记变得混乱基本上
是同一个文档。您不能依赖于同级节点的相对顺序,XML规范不强制执行顺序,不同的解析器/生成器将保持或不保持原始顺序。如果您的设计依赖于此,您需要检查您的设计。@谢谢。元素的属性中也会发生这种混乱的情况吗?属性也不是有序的。这不一定是真的。规范化是为了在幕后计算签名而发生的,但是文档在签名时通常不是这样的,尤其是如果签名方法被封装或分离。