我遇到了同样的问题,花了太多时间,但我最终找到了办法.
我找到并使用了forge开源库.您可以通过以下方式简单地添加到项目中:
npm install node-forge
然后,下面的代码片段使用PKCS#7格式执行加密.
var forge = require('node-forge');
// create cert object
var cert = forge.pki.certificateFromPem(certOrPemString);
// create envelop data
var p7 = forge.pkcs7.createEnvelopedData();
// add certificate as recipient
p7.addRecipient(cert);
// set content
p7.content = forge.util.createBuffer();
p7.content.putString('content to be encrypted');
// encrypt
p7.encrypt();
// obtain encrypted data with DER format
var bytes = forge.asn1.toDer(p7.toAsn1()).getBytes();
此代码块将加密您提供的内容并返回具有DER输出格式的字节数组.
您可以通过以下方式将字节数组转换为UTF-8字符串:
var str = Buffer.from(bytes, 'binary').toString('utf8');
您可以按如下方式解密内容:
var recipient = p7.findRecipient(cert);
// decrypt
p7.decrypt(p7.recipients[0], privateKey);
希望这可能有所帮助.