如何确定 RSA 加密邮件中使用的填充方案?
答案 0 :(得分:1)
最好的方法可能是执行PKCS#1 v1.5或OAEP解密,看看你是否打了金牌。如果选择了错误的算法,则unpadding将失败。
可以对原始解密进行处理,然后通过将填充的消息表示为十六进制来查看结果方案。如果生成的八位字符串(字节数组)以0002
开头,那么它可能是PKCS#1 v1.5填充。如果它以00
开头,然后是随机查找字节,那么它可能是OAEP。如您所见,这只是一种启发式算法,而不是一种完整的算法。请注意,OAEP的MFG1可以使用散列函数进行参数化,但通常使用SHA-1。
RSA-KEM使用不多,但由于它导致完全随机的密钥种子(可能排除第一位),除了期望RSA-KEM(如果密文和密文)之外,没有办法测试RSA-KEM可以验证私钥是否正确,并且该值与其他方案之一/缺乏结构不匹配。
协议应该定义使用哪种算法。将算法选择留给解密例程可以打开攻击实施。密码的安全性证明不允许选择其他算法。
因此,您可以使用上面的方法来分析协议,但请不要在您的实现中使用它来在现场选择算法。