【问题标题】:How to decrypt data using RSA public key?如何使用 RSA 公钥解密数据?
【发布时间】:2011-04-11 13:13:45
【问题描述】:

让我介绍一下我的问题,我有一些 *.crt 文件,其中包含 DER 编码的 x509 版本 3 证书。使用 ASN1 DER(libtomcrypt) 我解密数据并将其保存到一些名为 x509v3 的结构中。 我有一些消息 M,M 的加密签名 -> S(RSA 加密),以及位于 x509 证书(主题公钥字段)内的公钥 -> P。首先我必须使用公钥 P 解密 S,但问题是我找不到任何可以执行此操作的 api?
我寻找 libtomcrypt 但似乎没有 api 接受公钥(这是 unsigned char * )和加密数据(也是 unsigned char *)并提供解密数据( unsigned char *)。

感谢您的帮助! p.s.对不起我的英语;)

【问题讨论】:

标签: c cryptography rsa


【解决方案1】:

您是历史上草率呈现签名的无数受害者之一,这已经造成并且仍然造成大量混乱。

你拥有的是一个签名,你想要验证它。存在多种签名算法,其中一种称为“RSA”,因为它看起来类似于非对称加密算法,也称为相似。对 RSA 签名的一个非常粗略的描述是“你用私钥加密”(即在“反向”方向上采用加密算法),这就是为什么签名经常被这样描述......只是它并没有真正起作用像这样。使用 RSA 的非对称加密意味着其核心是数学运算(模幂运算),但也是对安全性非常重要的“填充”; RSA 签名也暗示了一个填充,但是一个非常不同的。

因此,您真的不应该将签名视为一种加密。这只会让你感到困惑。

在 libtomcrypt 中,RSA 签名验证函数称为rsa_verify_hash()

【讨论】:

  • 感谢您的帮助,但我还有一个问题,在使用 rsa_verify_hash() 之前,我必须使用 rsa_import 导入我的公钥。然后我可以使用 rsa_verify_hash(),但是这个函数有一个参数 saltlen,我不明白它是什么,我必须发送给它什么?
  • “salt len”用于 PSS 填充。 PKCS#1(定义 RSA 的标准,在 Google 上查找)定义了两个签名算法,一个是“旧版本”(也称为“v1.5”),另一个是“ PSS") 较新(从密码学上讲“更安全”)但更复杂;它需要一些额外的参数,包括盐长度。我对 libtomcrypt API 的了解不足以进一步帮助您。
猜你喜欢
  • 2011-03-08
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 2013-06-08
  • 2020-03-06
  • 1970-01-01
相关资源
最近更新 更多