使用 xml-crypto 和 PSHA1
Using xml-crypto with PSHA1
是否可以通过 PSHA1 (http://schemas.xmlsoap.org/ws/2005/02/trust/CK/PSHA1) 密钥使用 XML 加密?
我有两个秘密并使用它们生成了一个 PSHA1 密钥字符串,但是失败了:
Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
我不知道这个密钥需要采用什么格式才能被接受,它不是 PEM 证书,只是一个基于 2 个提供的随机数的字符串。一种由客户端在请求期间提供,一种由服务器在响应中提供。
const sig = new SignedXml();
sig.addReference("/*[local-name()='Envelope']/*[local-name()='Header']/*[local-name()='Security']/*[local-name()='Timestamp']");
sig.signingKey = '<SIGNING_KEY>';
sig.computeSignature(xml);
fs.writeFileSync('signed.xml', sig.getSignedXml());
它在此处的 signer.sign
行失败:
this.getSignature = function(signedInfo, signingKey) {
var signer = crypto.createSign("RSA-SHA1")
signer.update(signedInfo)
var res = signer.sign(signingKey, 'base64')
return res
}
PSHA1 算法未在加密库中实现,但有一个 PSHA1
npm 包可用于生成密钥。之后,您可以使用消息和密钥以标准方式生成 SHA1 哈希。
我在这里问了一个非常相似的问题,它回答了这个问题:
是否可以通过 PSHA1 (http://schemas.xmlsoap.org/ws/2005/02/trust/CK/PSHA1) 密钥使用 XML 加密?
我有两个秘密并使用它们生成了一个 PSHA1 密钥字符串,但是失败了:
Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
我不知道这个密钥需要采用什么格式才能被接受,它不是 PEM 证书,只是一个基于 2 个提供的随机数的字符串。一种由客户端在请求期间提供,一种由服务器在响应中提供。
const sig = new SignedXml();
sig.addReference("/*[local-name()='Envelope']/*[local-name()='Header']/*[local-name()='Security']/*[local-name()='Timestamp']");
sig.signingKey = '<SIGNING_KEY>';
sig.computeSignature(xml);
fs.writeFileSync('signed.xml', sig.getSignedXml());
它在此处的 signer.sign
行失败:
this.getSignature = function(signedInfo, signingKey) {
var signer = crypto.createSign("RSA-SHA1")
signer.update(signedInfo)
var res = signer.sign(signingKey, 'base64')
return res
}
PSHA1 算法未在加密库中实现,但有一个 PSHA1
npm 包可用于生成密钥。之后,您可以使用消息和密钥以标准方式生成 SHA1 哈希。
我在这里问了一个非常相似的问题,它回答了这个问题: