我正在尝试使用Java对XML文档进行数字签名。我已经按照我找到的一些引用实现了功能,这些引用使用了javax.xml.crypto.dsig
包中的各种实现。
但是,我的当前实现与许多我查看的示例一样-它相当冗长,并涉及使用不少于23个不同的API类,来自java.xml.crypto.dsig
、javax.xml.transform
和java.security
等其他包。感觉就像进入了工厂工厂工厂,花费了我几个小时才弄清楚发生了什么。
我的问题是,有更简单的方法吗? 如果我有公共/私有密钥文件,而我想向XML文档添加一个<Signature/>
,是否存在一个库,只允许我调用类似于以下内容的东西:
OutputStream signFile(InputStream xmlFile, File privateKey)
...没有所有XMLSignatureFactory / CanonicalizationMethod / DOMSignContext的疯狂吗?
我对密码学不是很熟悉,Java提供的API似乎对像我这样试图熟悉数字签名的开发人员来说非常令人望而生畏。如果所有这些都是必需的或目前没有更友好的API可用,那没问题,我愿意接受这个答案。我只想知道是否在这里不必要地走了艰难的路。