首页 > 解决方案 > 为什么 RSAEncryptionPadding.OaepSHA256 出现 RSA 加密错误?

问题描述

以下代码有效。

        var plainText = "abc";
        var plainBytes = UTF8Encoding.UTF8.GetBytes(plainText);

        var rsaParams = new RSAParameters();
        rsaParams.Modulus = Convert.FromBase64String("...");
        rsaParams.Exponent = Convert.FromBase64String("...");
        var rsa = new RSACryptoServiceProvider(2048);
        rsa.ImportParameters(rsaParams);
        var actualEncryptedBytes = rsa.Encrypt(plainBytes, RSAEncryptionPadding.OaepSHA1);

但是以下不起作用并且“指定的填充模式对此算法无效。”错误。为什么?

        var plainText = "abc";
        var plainBytes = UTF8Encoding.UTF8.GetBytes(plainText);

        var rsaParams = new RSAParameters();
        rsaParams.Modulus = Convert.FromBase64String("...");
        rsaParams.Exponent = Convert.FromBase64String("...");
        var rsa = new RSACryptoServiceProvider(2048);
        rsa.ImportParameters(rsaParams);
        var actualEncryptedBytes = rsa.Encrypt(plainBytes, RSAEncryptionPadding.OaepSHA256);

标签: .net.net-corecryptography

解决方案


感谢上面的 Topaco,以下代码有效:

        var rsaParams = new RSAParameters();
        rsaParams.Modulus = Convert.FromBase64String("...");
        rsaParams.Exponent = Convert.FromBase64String("...");
        var rsa = RSA.Create(rsaParams);
        var actualEncryptedBytes = rsa.Encrypt(plainBytes, RSAEncryptionPadding.OaepSHA256);

推荐阅读