【问题标题】:How do I implement public/private key cryptography in SJCL?如何在 SJCL 中实现公钥/私钥加密?
【发布时间】:2014-03-09 04:18:12
【问题描述】:

我使用Stanford Javascript Crypto Library (SJCL) 进行对称 AES 加密(基于他们演示页面上的示例)。但是,我还有一个额外的要求是生成一个密钥对,用公钥加密数据,用私钥解密数据。一些类名表明这在 SJCL 中可能是可能的,但我想知道是否有人可以提供一个示例来说明它是如何完成的。在这个阶段我不关心私钥存储,只关心内存中的生成和公钥/私钥对的使用。

如果不可能,我会对一个涵盖 AES 和公钥加密的替代库的建议感兴趣 - 但我知道这是我可以自己研究的东西!所以主要是我很想知道我开始使用的库是否可以满足我的所有需求,或者我是否需要寻找替代方案。

【问题讨论】:

  • 一般来说,仅仅生成一个公钥/私钥对并没有那么有用。问题是您需要建立对公钥的信任。这个问题非常接近题外话,因为要求示例代码或库被认为是题外话(展示您自己尝试过的内容,您的搜索引擎和我们的一样好)。

标签: javascript cryptography aes rsa sjcl


【解决方案1】:

看起来他们最近发布了这个(大约在您首次发布后一年),但它提供了如何进行不对称加密的教程

https://github.com/bitwiseshiftleft/sjcl/wiki/Asymmetric-Crypto

【讨论】:

    【解决方案2】:

    事实上,使用 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

    附: 椭圆曲线密码学 (ECC) 是一种基于有限域上椭圆曲线的代数结构的公钥密码学方法。 256 位 ECC 公钥应提供与 3072 位 RSA 公钥相当的安全性 http://en.wikipedia.org/wiki/Elliptic_curve_cryptography

    【讨论】:

    • justinthomas.pro 的链接现已失效。
    【解决方案3】:

    根据Symmetric Cryptography in Javascript,没有提到公钥加密。所以好像不支持。

    可能有一些零散的解决方案可用,但我不知道有任何解决方案。 Github 似乎有一些选择:javascript public key crypto site:github.com.

    WebCrypto Working Group 正在解决这个问题。它将具有配置、密钥生成、密钥存储和一些公钥操作,例如sealsign。第一个版本不会提供丰富的 Diffie-Hellman 或 BigIntger 等原始数据。例如,请参阅Question on BigInteger operations

    猜你喜欢
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多