我想获取RSAKey参数以验证JWT令牌,即不使用充气城堡或任何第三方库。我进行了大量搜索,但找不到任何能产生模量和指数的东西,即RSAParameters的一部分。 下面分享了我尝试过的小片段,如果您有任何建议,请告诉我
string secret = "XXXXXXX";
string token = "XXXXXXX";
string[] parts = token.Split('.');
string header = parts[0];
string payload = parts[1];
var keyBytes = Convert.FromBase64String(secret); // your key here
var rsaKeyParameters = (RsaKeyParameters)PublicKeyFactory.CreateKey(keyBytes);//////I don't want to use this line of code as it is part of //////////third party library it only helps us in getting modulus and exponent
//////Please let me know any other way to achieve validation of JWT token if any
RSAParameters rsaParameters = new RSAParameters
{
Modulus = rsaKeyParameters.Modulus.ToByteArrayUnsigned(),
Exponent = rsaKeyParameters.Exponent.ToByteArrayUnsigned()
};
var rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(rsaParameters);
byte[] hash = SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes(header + '.' + payload));
var rsaDeformatter = new RSAPKCS1SignatureDeformatter(rsa);
rsaDeformatter.SetHashAlgorithm("SHA256");
bool isv = rsaDeformatter.VerifySignature(hash, FromBase64Url(parts[2]));
Console.WriteLine("is" + isv);