用于解密 SMIME.p7m 文件的 Javascript 库

Posted

技术标签:

【中文标题】用于解密 SMIME.p7m 文件的 Javascript 库【英文标题】:Javascript library for decryption of SMIME.p7m files 【发布时间】:2014-06-20 13:50:09 【问题描述】:

我正在寻找一种在客户端解密 S/MIME 电子邮件的方法。我特别不希望客户端与服务器共享私钥,因此需要找到一种方法让客户端自己做所有事情。

我不需要支持多个浏览器,所以使用像window.Crypto that currently works only with Mozilla Firefox 这样的东西是完全可以的。这尤其是因为客户端上的浏览器将需要以某种方式访问​​客户端计算机上的证书存储(为了访问私钥 - 当然需要用户的批准)。

我不知道从哪里开始,因为几乎不可能找到任何示例或教程来做这样的事情,所以您可以分享的任何代码都将受到欢迎。

【问题讨论】:

【参考方案1】:

我不熟悉 SMIME.p7m 文件,但听起来好像它们是 pkcs7 加密的。

nodejs cryptojs module 可能会支持 pkcs7。

因为nodejs 是 javascript,如果它不能开箱即用,那将是一个很好的起点。

nodejs 模块通常用于支持 nodejs 和浏览器的使用。

如果它不支持开箱即用的浏览器,<keygen> html5 tag and it's related features(用于存储密钥等)可能会很有趣。

【讨论】:

【参考方案2】:

我们在此处提供了使用 Web Crypto 在 Javascript 中加密/解密和签名/验证 S/MIME 消息的示例 - https://github.com/PeculiarVentures/pkijs-es6/tree/master/examples/

这种方法在浏览器和节点中都可以使用,如果在节点上使用 WebCrypto polyfill,例如 - https://github.com/PeculiarVentures/node-webcrypto-ossl

【讨论】:

以上是关于用于解密 SMIME.p7m 文件的 Javascript 库的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 MimeKit 解密 p7m

使用 OpenSSL 解码/提取 smime.p7m 文件内容(带有嵌入文件的电子邮件)?

压缩 AS2 主体

我可以将 S/MIME 作为多部分/混合消息的一部分吗?

用于解密加密 p8 文件的 BouncyCastle 替代方案

nwjs-nodejs- 加密和解密 img 文件 (jpg) 并将解密后的数据用于 img 元素