让我介绍一下我的问题,我有一些* .crt文件,其中包含DER编码的x509版本3证书。使用ASN1 DER(libtomcrypt)我解密数据并将其保存到一些名为x509v3
的结构中。
我有一些消息M,M的加密签名 - > S(RSA加密)和公钥 - > P位于x509证书(主题公钥字段)内。首先我必须使用公钥P解密S,但问题是我找不到任何能做到这一点的api?
我找了libtomcrypt,但似乎没有api接受公钥(这是unsigned char *)和加密数据(也是unsigned char *)并给出解密数据(unsigned char *)。
感谢您的帮助! 附:抱歉我的英文;)
答案 0 :(得分:3)
你是历史上草率的签名的无数受害者之一,这些签名已经造成并且仍然造成了大量的混乱。
您拥有的是签名,并且您希望验证它。存在几种签名算法,其中一种称为“RSA”,因为它看起来类似于也称为类似的非对称加密算法。 RSA签名的一个非常粗略的描述是“你用私钥加密”(即在“反向”方向上采用加密算法),这就是为什么签名经常被描述为这样......除了它没有真正起作用像这样。 RSA的非对称加密意味着数学运算(模幂运算)的核心,但也是一个对于安全性非常重要的“填充”; RSA签名也意味着填充,但是非常明显。
所以你真的不应该把签名看作是一种加密。这只会让你感到困惑。
在libtomcrypt中,RSA签名验证功能称为rsa_verify_hash()
。