1 何为RSA with MD5算法?
在项目中遇到这样的问题,别人用RSA with MD5加密一段数据后,我们接收签名和原文,我们需要根据他们提供的公钥来对他们发过来的数据进行数字签名合法性的验证。
2 银行端 RSA with MD5生成签名的过程如下:
假设 原文为X,
先用MD5算法将原文进行散列,即y=h(x)
然后银行用私钥,使用RSA算法将y进行编码,即z=d(y),即得到签名
3 客户端签名验证步骤:
1) 使用公钥进行签名的逆运算,即E(明文)
2) 使用标准MD5算法运算原文,即H(签名)
3) 比较1)、2)结果。 即比较 E(明文) ?= H(签名)
4 算法公式
E(X)表示用RSA算法对明文X加密(即用公钥编码),
D(X)表示用RSA算法对密文X解密(即用私钥编码),
H(X)表示用MD5(或其它散列算法)对X散列:
对文档X签名:
R = D(H(X));
验证文档X和签名R是否一致:
H(X) == E(R)
由于D要用私钥而E只用公钥,结果只有私钥持有者可以签名,而所有的公钥持有者都可以进行验证。