Расшифровать ключ asymmetri c, зашифрованный с использованием openssl, oaep padding mode - PullRequest
0 голосов
/ 08 мая 2020

У меня есть свой Symmetri c, созданный с помощью следующей команды

openssl rand 32 > test.key

И он зашифрован с помощью моего ключа publi c, как показано ниже. Он использует режим заполнения OAEP.

openssl pkeyutl -pkeyopt rsa_padding_mode:oaep -encrypt -inkey public.key -pubin -in test.key -out test.key.enc

Но когда я пытаюсь расшифровать, используя свой закрытый ключ, он дает мне ошибку Badding.

Мой Java Код


    // few imports  

  private static PrivateKey getPrivateKey(final String privateKeyFile)
      throws IOException, NoSuchAlgorithmException, InvalidKeySpecException {
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
    final KeyFactory keyFactory = KeyFactory.getInstance(PayboxUtil.ENCRYPTION_ALGORITHM);
    final PemReader reader = new PemReader(new FileReader(privateKeyFile));
    final byte[] pubKey = reader.readPemObject().getContent();
    final PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(pubKey);
    return keyFactory.generatePrivate(spec);
  }  

  public static byte[] decryptRandomKey(final byte[] encryptedKey, final String private_key_file)
      throws NoSuchProviderException {
    try {
      final Key privKey = getPrivateKey(private_key_file);
      final byte[] ciphertext = encryptedKey;     
      final Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPPadding");
      final OAEPParameterSpec oaepParams = new OAEPParameterSpec("SHA-512", "MGF1",
          new MGF1ParameterSpec("SHA-1"), PSpecified.DEFAULT);
      cipher.init(Cipher.DECRYPT_MODE, privKey, oaepParams);
      final byte[] symmetricKey = cipher.doFinal(ciphertext);
      return symmetricKey;
    } catch (final Exception e) {    
      e.printStackTrace();
    }
    return null;
  }

1 Ответ

0 голосов
/ 08 мая 2020

Используется ниже параметра Oaep spe c

new OAEPParameterSpec("SHA1", "MGF1", MGF1ParameterSpec.SHA1, PSource.PSpecified.DEFAULT);

Он расшифровывает, но контрольная сумма не совпадает.

Но с использованием расшифрованного ключа симметрии c i может декодировать зашифрованные файлы. Я нашел хорошую документацию по openssl pkeyutl

https://www.openssl.org/docs/man1.0.2/man1/pkeyutl.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...