#c# #asp.net-core #cryptography #rsa #jwk
#c# #asp.net-core #криптография #rsa #jwk
Вопрос:
допустим, у нас есть следующий JWK в качестве встроенного ресурса в проекте
следующий код успешно считывает JSON в JSONWebKey
JsonWebKey jwk = ReadResource();
Мы хотим, чтобы это было преобразовано в пару значений ключа RSA, поэтому у нас есть следующий код, который, как ожидается, преобразует JWK в пару ключей RSA.
UnicodeEncoding ByteConverter = new UnicodeEncoding();
RSAParameters publicKey = new RSAParameters();
RSAParameters privateKey = new RSAParameters();
JsonWebKey jwk = ReadResource();
// PUBLIC KEY
publicKey.Exponent = ByteConverter.GetBytes(jwk.E);
publicKey.Modulus = ByteConverter.GetBytes(jwk.N);
// PRIVATE KEY
privateKey.Exponent = ByteConverter.GetBytes(jwk.E);
privateKey.Modulus = ByteConverter.GetBytes(jwk.N);
privateKey.D = ByteConverter.GetBytes(jwk.D);
privateKey.DP = ByteConverter.GetBytes(jwk.DP);
privateKey.DQ = ByteConverter.GetBytes(jwk.DQ);
privateKey.P = ByteConverter.GetBytes(jwk.P);
privateKey.Q = ByteConverter.GetBytes(jwk.Q);
privateKey.InverseQ = ByteConverter.GetBytes(jwk.QI);
Но когда мы пытаемся подписать данные следующим образом
RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(2048);
RSAalg.ImportParameters(privateKey);
return RSAalg.SignData(DataToSign, SHA256.Create());
он выдает CryptographicException @ RSAalg.ImportParameters(PrivateKey);
каков правильный способ преобразования JWK в пару ключей RSA с помощью C#.net ядро.
Комментарии:
1.
UnicdeEncoding
это неправильный кодировщик. Значения кодируются с использованием urlsafe base64, и именно такой декодер вам нужен.2. сработало как шарм, если вы опубликуете его в качестве ответа, я могу пометить его как ответ, спасибо