我使用Stanford Javascript Crypto Library (SJCL)进行对称AES加密(基于其演示页面上的示例)。但是,我还需要生成密钥对,使用公钥加密数据,并使用私钥解密数据。一些类名表明这可能在SJCL中有可能,但我想知道是否有人可以帮助一个如何完成它的例子。我不关心这个阶段的私钥存储,只是内存生成和使用公钥/私钥对。
如果不可能,我会对能够涵盖AES和公钥加密的替代库的建议感兴趣 - 但我知道这是我可以自己研究的东西!所以主要是我很想知道我开始使用的图书馆是否可以满足我的所有需求,或者我是否需要寻找替代方案。
答案 0 :(得分:7)
实际上,可以使用ECC模块实现私有/公共加密。如果您是专业人士,可以查看http://bitwiseshiftleft.github.io/sjcl/doc/上的api文档。
如果你想要一个如何完成它的例子,你可以通过
http://justinthomas.pro/crypto/test.html http://justinthomas.pro/crypto/存储库网址
您可以在此处查看SJCL ECC实施(包括密钥生成)
这也许会有所帮助 https://github.com/bitwiseshiftleft/sjcl/issues/134
P.S。 椭圆曲线加密(ECC)是一种基于有限域上椭圆曲线的代数结构的公钥加密方法。 256位ECC公钥应提供与3072位RSA公钥相当的安全性 http://en.wikipedia.org/wiki/Elliptic_curve_cryptography
答案 1 :(得分:3)
看起来他们最近发布了此消息(在您的初始发布后大约一年),但它提供了如何进行不对称加密的教程
https://github.com/bitwiseshiftleft/sjcl/wiki/Asymmetric-Crypto
答案 2 :(得分:-3)
根据Symmetric Cryptography in Javascript,没有提到公钥加密。所以它似乎不受支持。
可能有一些破碎的解决方案可供选择,但我不知道是否有任何问题。 Github似乎有一些选择:javascript public key crypto site:github.com。
WebCrypto Working Group正在解决这个问题。它将具有配置,密钥生成,密钥存储和一些公钥操作,如seal
和sign
。第一个修订版将不提供丰富的Diffie-Hellman或BigIntger原语。例如,请参阅Question on BigInteger operations。