JweAlgorithm.RSA_OAEP_256,JweEncryption.A256GCM .net Core 2.0

时间:2018-12-18 15:54:25

标签: .net-core rsa

我正在尝试使用.Net Core 2.0解密Mulesoft API的JWE返回

我得到了JWE,一串股票。私钥及其密码也正确。

解码时出现错误System.Security.Cryptography.CryptographicException':'指定的填充模式对此算法无效。'

但是在jwe的第一部分中,“ base64 => {“ alg”:“ RSA-OAEP-256”,“ enc”:“ A256GCM”}

//get private key
TextReader decrypterPrivateReader = System.IO.File.OpenText(decrypterPrivateFile);
PemReader decrypterPrivatePemReader = new PemReader(decrypterPrivateReader, new PasswordFinder(decrypterPrivatePwd));
RsaPrivateCrtKeyParameters decrypterPrivateKey = (RsaPrivateCrtKeyParameters)((AsymmetricCipherKeyPair)decrypterPrivatePemReader.ReadObject()).Private;

RSAParameters decrypterPrivateParams = DotNetUtilities.ToRSAParameters(decrypterPrivateKey);
RSACryptoServiceProvider decrypterPrivateProvider = new RSACryptoServiceProvider();
decrypterPrivateProvider.ImportParameters(decrypterPrivateParams);

//decode token
return Jose.JWT.Decode(jwe, decrypterPrivateProvider, JweAlgorithm.RSA_OAEP_256, JweEncryption.A256GCM);

谢谢

1 个答案:

答案 0 :(得分:0)

RSACryptoServiceProvider的使用使您受挫,它唯一了解的OAEP是OAEP-SHA-1。

在.NET Core上时,正确的RSA始终为RSA.Create()。返回的对象始终适用于您所运行的平台,并且(从2.1版本开始)可以始终执行基于SHA-2的OAEP。

如果您使用的是.NET Framework,则RSA.Create()将返回RSACryptoServiceProvider,因此,您需要使用特殊情况的.NET Framework来构建RSACng。