加密X509Certificate公钥

时间:2017-09-19 20:15:04

标签: c# public-key-encryption x509certificate2

所有,我正在为IDP发起一个项目的web sso,并且服务提供商要求RSA加密AES-128对称密钥(带有PKCS1填充的ECB)和Base64编码,然后再将其添加到 SAML 2.0响应的AttributeStatement 部分。我的理解是RSA加密是非对称的,我们必须加密的密钥是服务提供商公钥。但是我们没有SP的公共证书,所以我决定RSA加密我们的X509Certicate的公钥

这是我的代码,它在调用RSACryptoServiceProvider类上的Encrypt方法时抛出Bad Length Cryptographic异常。有人知道这是什么问题吗?

using(var rsa = cert.PublicKey.Key as RSACryptoServiceProvider)
            {
                rsa.KeySize = 1024;                
                byte[] encryptedKey = rsa.Encrypt(cert.GetPublicKey(),false);                
                encodedPublicKey =  Convert.ToBase64String(encryptedKey);
            }

1 个答案:

答案 0 :(得分:2)

使用RSA公钥加密的数据量必须(我不知道确切的公式)小于公钥的长度。

如果加密AES-128,您将加密128位。