用于解密 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 库的主要内容,如果未能解决你的问题,请参考以下文章
使用 OpenSSL 解码/提取 smime.p7m 文件内容(带有嵌入文件的电子邮件)?