C # альтернатива X509encodedkeyspec и keyfactory - PullRequest
0 голосов
/ 01 апреля 2019

Мне нужно преобразовать следующий код JAVA в C #.Код используется для генерации токена авторизации с использованием ключа API и открытого ключа.Мне не удалось найти альтернативу ac # предоставленному коду.

Я исследовал использование BouncyCastle для альтернатив X509EncodedKeySpec и KeyFactory.

Вот решение, написанное на JAVA, мне нужносделать то же самое в c #

  KeyFactory keyFactory = KeyFactory.getInstance("RSA");
  Cipher cipher = Cipher.getInstance("RSA");
  byte[] encodedPublicKey = Base64.decodeBase64(publicKey);
  System.out.println("Bytes = " + encodedPublicKey);
  X509EncodedKeySpec publicKeySpec = new 
  X509EncodedKeySpec(encodedPublicKey);
  PublicKey publicKey = keyFactory.generatePublic(publicKeySpec);

  cipher.init(Cipher.ENCRYPT_MODE, publicKey);
  byte[] encryptedApiKey = 
  Base64.encodeBase64(cipher.doFinal(apiKey.getBytes("UTF-8")));
  return new String(encryptedApiKey, "UTF-8");

Вот мой c #, пока отсутствующим компонентом является X509EncodedKeySpec.

        var RSA = new RSACryptoServiceProvider(4096);

        var RSAPublicKey = RSA.ExportParameters(false);

        RSA = new RSACryptoServiceProvider();
        RSA.ImportParameters(RSAPublicKey);

        var APIKeyRSACipher = 
        RSA.Encrypt(Convert.FromBase64String(APIKey),false);

        var DigestedRSACipher = Convert.ToBase64String(APIKeyRSACipher);

        Console.WriteLine(DigestedRSACipher);
        Console.ReadKey();

Любая помощь / совет будет оценен, так как я пыталсячтобы понять это в течение достаточно долгого времени:)

...