all,我正在为一个项目启动IDP启动Web SSO,而服务提供商对RSA进行了对AES-128对称键(带PKCS1填充的ECB)和BASE64 ENCODE的要求。在将其添加到SAML 2.0响应的属性部分之前。我的理解是RSA加密是不对称的,我们必须加密的关键是服务提供者公共密钥。但是我们没有SP的公共证书,所以我决定加密RSA的X509Certicate的公钥
这是我拥有的代码,它在rsacryptoserviceprovider类上调用加密方法会引发不良长度的加密例外。有没有人知道问题?
using(var rsa = cert.PublicKey.Key as RSACryptoServiceProvider)
{
rsa.KeySize = 1024;
byte[] encryptedKey = rsa.Encrypt(cert.GetPublicKey(),false);
encodedPublicKey = Convert.ToBase64String(encryptedKey);
}
您可以使用RSA公钥加密的数据量必须(我不知道确切的方程式)小于公共密钥的长度。
如果加密AES-128,您将加密128位。