0. 版本更新说明
版本更新情况简要说明:
- V2.2:主要是增加了三个杂凑函数:SHA-224、SHA-512/224、SHA-512/256。
3. 密钥
公钥
(n, e)
私钥
(n, d)
或者(p, q, dP, dQ, qInv),
- dP=d mod p-1,
- dQ=d mod q-1,【即e · dP = 1 mod p–1,e · dQ = 1 mod q–1】
- q* qInv=1 mod p
注解:
dP, dQ,的出现是为了用CRT求 Cd mod n
因为dP=d mod p-1,dQ=d mod q-1,→ CdP=Cd mod p,CdQ=Cd mod q
所以计算Cd mod n改为计算同余式组 x=CdP mod p,x=CdQ mod q,计算出的x即为Cd mod n
4. 数据类型转化
I2OSP 整数→字符串 (Integer → Octet-String),字符串采用大端表示
OS2IP 字符串→整数 (Octet-String → Integer),字符串采用大端表示
5. 密码算法
5.1 加密解密
5.1.1 加密解密——加密RSAEP
c = me mod n.
5.1.2 加密解密——解密RSADP
- 若私钥为(n, d)
m = cd mod n.
- 若私钥为 (p, q, dP, dQ, qInv)
m1 = cdP mod p.
m2 = cdQ mod q.
h = qInv * (m1 – m2) mod p.
m = m2 + h q.
(其中q*qInv = 1 (mod p))
5.2签名验证
5.2.1 签名验证——签名RSASP1
- 若私钥为(n, d)
s = md mod n.
- 若私钥为(p, q, dP, dQ, qInv))
s1 = mdP mod p.
s2 = mdQ mod q.
h = qInv * (s1–s2 ) mod p.
s = s2 + h q.
5.2.2 签名验证——验证RSAVP1
m = se mod n