参考: openssl之 : crypto/rsa/rsa_pk1.c
对于 RSA_PKCS1_PADDING 来讲(参看: ./crypto/rsa/rsa_eay.c ):
- 私钥加密时,使用的是: RSA_padding_add_PKCS1_type_1(…) pad的是定值 0xff
- 公钥加密时,使用的是: RSA_padding_add_PKCS1_type_2(…) pad的是随机的非零值 (这也是为什么公钥加密每次结果不同,而私钥加密每次结果相同的原因;对于私钥加密,多半用于签名,不需要随机,或者说,相同的数据每次签名结果都相同是很好的)
Optimal Asymmetric Encryption Padding (OAEP)
OAE: 即: 最完美的非对称加密; 而OAEP 是一种padding ; 参考: http://en.wikipedia.org/wiki/Optimal_asymmetric_encryption_padding
其他padding:
参考资料:
rsa算法: http://www.di-mgt.com.au/rsa_alg.html
http://www.douban.com/note/338531480/
http://www.tuicool.com/articles/aMfIba
http://crypto.stackexchange.com/questions/22531/how-does-rsa-padding-work-exactly
PKCS #1: RSA Cryptography Specifications Version 2.0
Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1
PSS: (具体实现参看 : pss.go)
- Probabilistic Signature Scheme, a secure way of creating signatures with RSA (see also: PKCS1#Schemes)
MGF(pss 的时候需要):
- Mask Generation Function, a function generating an arbitrary number of bits for a given input. (for example MGF1 from PKCS1)