【问题标题】:Encrypting the X509Certificate public Key加密 X509Certificate 公钥
【发布时间】:2017-09-19 20:15:03
【问题描述】:

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

这是我拥有的代码,它在调用 RSACryptoServiceProvider 类的 Encrypt 方法时引发错误长度加密​​异常。有谁知道问题出在哪里?

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

【问题讨论】:

    标签: c# public-key-encryption x509certificate2


    【解决方案1】:

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

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

    【讨论】:

    • Pepo,你是对的。我得到了我们的 SP,他们给我发了公共证书。SAML 中的数据应该使用我们的 AES-128 位对称密钥加密,我们使用 SP 的公共密钥加密我们的 AES-128 对称密钥
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2013-04-05
    • 2018-02-27
    • 2013-04-06
    • 2011-11-07
    相关资源
    最近更新 更多