【问题标题】:How to make this RSA lib (with en/decryption functionality only(!)) sign something?如何使这个 RSA lib(仅具有加密/解密功能(!))签名?
【发布时间】:2010-08-30 21:40:07
【问题描述】:

或者具体的 - 我正在使用this javascript RSA 库作为我的实验项目的客户端代码...我希望能够签署和验证消息(-> 使用私钥加密并使用公钥解密)

有没有办法以加密/解密算法使用“反向”密钥的方式更改密钥数据?我试图交换 e 和 d (因为这就是我从维基百科看来的区别) - 对于“签名”它有效(但我认为它是不可解密的垃圾)......对于“验证”我试图计算 d mod (p-1), d mod (q-1) and 1/q mod p with e 而不是 e 用于使用解密算法进行验证......但这真的是我想的那样吗?如果是,我想它不必存储在私钥中,因为它很容易计算,有 d、p 和 q...?

要点:如果有一种方法可以将修改后的私钥输入加密算法以进行签名并且对对方也一样 - 我该怎么做?必须对密钥进行哪些修改?

【问题讨论】:

  • 你用私钥签名,用公钥验证。为什么还不够好?
  • 如果它真的可以工作就足够了......正如标题中所写 - 我正在使用的库不支持开箱即用......所以我要么必须修补用密钥来欺骗那里的加密/解密算法,或者我必须自己实现签名......

标签: javascript cryptography rsa


【解决方案1】:

【讨论】:

  • 这不是我的问题的具体答案,但谢谢,我会通读它并尝试用它做点什么......
  • 好的,我想我理解了其中的区别......但仍然:我需要我的实现与 OpenSSL 兼容 - 你能告诉我 openssl 是如何做到的吗?我的意思是,它使用什么摘要?等等……
  • 哦该死的我明白了……PKCS 签名算法!好的,再次感谢:)
【解决方案2】:

你不能。

加密和签名有不同的填充。有时您会看到建议加密您的消息的哈希以获取签名。但是,这个建议是正确的。它导致与正确的签名方案不兼容的东西。此外,您的实现实际上可能是不安全的。 RSA 填充有很长的缺陷历史。即使是标准化委员会也不总是正确的。

【讨论】:

  • 使用上面链接中的信息,我成功实现了一个openssl兼容的签名......我认为openssl非常安全? ...
猜你喜欢
  • 2018-05-06
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 2012-02-19
  • 2017-07-02
  • 2012-03-13
  • 2015-03-16
相关资源
最近更新 更多