从秘密密钥生成RSA KEY参数,而无需使用弹性城堡或任何第三方库

时间:2019-01-07 10:14:08

标签: c# asp.net jwt rsa identity

我想获取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);

0 个答案:

没有答案