我正在尝试使用.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);
谢谢
答案 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。