非对称密钥签名算法流程

疑问&解答

  1. Q为什么 RSA 签名算法使用私钥对 hash 值做加密,而不是用公钥对 hash 做加密?

    A: 签名的目的是为了保证内容不被篡改,如果用公钥做加密,对方用私钥去解密验证,因为公钥是公开的,有泄漏风险,所以签名内容是会被伪造的。

RSA 签名算法

以 SHA1WITHRSA 算法为例

https://baike.baidu.com/item/sha1withrsa/19520247?fr=aladdin

SHA1安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准

SHA1WithRSA:用SHA算法进行签名,用RSA算法进行加密。

算法说明:

在对进行SHA1算法进行签名后,要求对签名后的数据进行处理,而不是直接进行RSA算法进行加密。

要求把SHA1签名后的数据进行压缩到20个字节(BCD TO HEX);

在前面插入15个字节标示数据(ASN.结构)

30(数据类型结构)21(总长度)30(数据类型)09(长度)06 05 2B 0E 03 02 1A 0500【数据具体类型不清楚-请专家指正】 04 (数据类型) 14 (长度) + SHA1签名数据

然后进行RSA加密,采用RSA_PKCS1_PADDING。

加签过程

  1. 对源数据进行 SHA1 签名
  2. 对签名值进行处理,压缩到 20 个字节
  3. 对处理后的值进行RSA 加密

验签过程

  1. 对密文进行 RSA 解密
  2. 对源值进行 SHA1签名,并进行处理,得到 20 个字节,与解密后的值比对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值