【问题标题】:RSA key pair encryption/decryption between Ruby and JavaScript?Ruby 和 JavaScript 之间的 RSA 密钥对加密/解密?
【发布时间】:2014-04-13 20:10:52
【问题描述】:

我一直在研究如何使用 OpenSSL 加密 Ruby 中的数据,并使用 JavaScript Forge 库解密 JavaScript 中的数据。

分发密钥的(不安全,但这仅用于研究)方法工作正常,即,我可以在 Ruby 中生成密钥并将它们放入 PEM 格式,将 PEM 传递给 JavaScript 并在 JavaScript 中恢复工作密钥,但是使用相同的密钥加密相同的字符串会产生两种不同的结果,因此两者之间的编码/解码显然不起作用。

有什么好的方法吗?

另一个问题是,将二进制数据字符串从 Ruby 传递到 JavaScript 而不会出现不兼容的类型错误,需要进行某种转换,例如,将加密数据转换为十六进制,但在 forge 库中使用此类信息证明是困难的。

【问题讨论】:

  • 根据您使用的加密类型,使用相同的密钥加密相同的字符串可能不会得到相同的结果。 en.wikipedia.org/wiki/Deterministic_encryption
  • 我明白了,我已经更新了我的问题以涉及另一个问题。但我认为公钥和 rsa 应该给出相同的结果
  • 实际上,仔细阅读一下,我认为默认情况下 RSA 是确定性的。
  • 您能描述一下您要完成的工作吗?
  • 解决了我自己的问题。查看答案。

标签: javascript ruby-on-rails ruby encryption cryptography


【解决方案1】:

我实际上在我原来的问题中解决了我自己的问题

我只是做得不对

为了以后参考,如果你使用ruby openssl RSA 加密并想将其传递给javascript,我建议使用https://github.com/digitalbazaar/forge 库用于JS 端,

其次,使用.unpack('H*')将加密字符串转换为十六进制

Forge PKI 库有一个 .hexToBytes() 函数,然后您可以使用 forge .decrypt 方法并找回您开始的内容

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-10
    • 2014-04-19
    • 2012-05-08
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多