我正在尝试手动验证嵌入式主板上的证书,因为它不支持Openssl或其他库。但它确实有用于MD5和SHA1哈希和RSA加密的库。
根据我的理解验证证书,首先计算证书的SHA1哈希(或MD5);然后使用CA的公钥解码签名以获得散列值。这两个哈希值应该相同。
SHA1哈希值产生20字节值,MD5产生16字节值。但是,签名的RSA解码不会。如果CA的密钥是1024位,则解码签名将是80字节;如果CA的密钥是512位,则解码的签名将是40个字节。所以我无法将20字节的SHA1值与40或80字节的解码签名进行比较。
我做错了吗?或者我错过了一步?
答案 0 :(得分:1)
缺少的位是填充算法。
您使用具有特定填充算法的RSA,并且相同的算法还告诉您如何获取结果(当您解密签名时)并从中提取实际数据(哈希)。