最近,我们的任务是为我们的产品制定 XML 通信规范。我的一些同事对 JAXB 用于编组和解组 XML 文档有很高的评价。我花了一些时间玩弄它,我明白它们来自哪里。它使简单的 XML 文档变得简单。
现在把它提升一个档次。我希望在我们的通信模型中为在我之后使用它的人“内置”签名验证中看到的一件事。我遇到的一个问题是,要验证签名,我需要将相应的 XML 视为字节。所以让我们举这个例子......
<topLevel>
<sensitiveData encoding="UTF8">
<creditCard>
<number>1234-1234-1234-1234</number>
<expDate>Oct 2020</expDate>
</creditCard>
</sensitiveData>
<signatureOfSensitiveData algorithm="SHA1WithRSA">VGhpc0lzQVNpZ25hdHVyZQ==</signatureOfSensitiveData>
</topLevel>
编辑:我实际上并没有传递信用卡数据。这里只是一个例子。
如果我能获得byte[]
“sensitiveData”标签内所有内容的(由编码确定)表示,那就太好了。我什至不介意为此再次调用“unmarshall” byte[]
。
这也为我们打开了其他大门。我们实际上可以在元素中引入“压缩”和“加密”属性。如果我们可以将它们视为一个byte[]
,我们就可以对它们进行膨胀和解密,然后将它们传递给再次解组。
旁注:我认为如果您对 XML 进行 base64 编码然后将其包含在一个元素中,这将有效。但这会迫使我们对甚至简单的文档进行 base64 处理,并在我们的消息中引入一些不必要的膨胀。
有什么解决方案的想法吗?我希望我只是缺少 JAXB 中的一些基本内容,并且在我得到它之后会轻而易举。
谢谢!