Расшифровать с помощью файла AES 256 - PullRequest
0 голосов
/ 19 октября 2019

Я следую этой теме, чтобы зашифровать мой файл на моем компьютере:

https://gist.github.com/dreikanter/c7e85598664901afae03fedff308736b

Поэтому я выполняю команду theses:

openssl genrsa -aes256 -out private.pem 8912
openssl rsa -in private.pem -pubout -out public.pem


openssl req -x509 -new -days 100000 -key private.pem -out certificate.pem



ENCRYPTION------------------------------ :
  openssl smime -encrypt -binary -aes-256-cbc -in config_auto.json -out config_auto.dat -outform   DER certificate.pem

Затем я реализую этот код, но это не работает:

public byte [] decryptRSA (byte [] data) генерирует исключение NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, ClassNotFoundException, 1011

    BigInteger m = new BigInteger(getKeyParams()[0],16);
    BigInteger e = new BigInteger(getKeyParams()[1],16);

    KeyFactory keyFactory2 = null;
    RSAPrivateKeySpec privateKeySpec = new RSAPrivateKeySpec(m, e);
    RSAPrivateKey privatekey = null;

    try {
    keyFactory2 = KeyFactory.getInstance("RSA");


        privatekey = (RSAPrivateKey) keyFactory2.generatePrivate(privateKeySpec);


    Cipher c2 = Cipher.getInstance("AES/CBC/PKCS5Padding")); 
    c2.init(Cipher.DECRYPT_MODE,privatekey); 

    byte[] decryptedData = c2.doFinal(data);

    return decryptedData;
    } catch (IllegalBlockSizeException | BadPaddingException | InvalidKeyException | NoSuchAlgorithmException | InvalidKeySpecException err) {
        err.printStackTrace();
    }
    return null;
}
1012

исключениефайл .cpp:

  extern "C"
  JNIEXPORT jobjectArray JNICALL
  Java_mypackage_JNIHelper_getKeyParams(JNIEnv *env, jobject instance) {
  jobjectArray valueArray = (jobjectArray) env->NewObjectArray(2, env->FindClass("java/lang/String"), 0);
  const char *hash[2];
  //MODULUS
  hash[0] =   "00b55984ae86b1ff2276802ea8eca62a68848c3cb7606ae2143ba652c3b9312fc2733f4fdb1e338ceb38cb9cecc6fcdd312d5661bba359c152f1ef5feab2db3b70f145dc29803242dabf66";

   //EXPONENT

    hash[1] = "7c1df677546cc2879dbf0130503731d332d4a0418955ddc1a749a05fa0820f83f048a6a8fb34a0ffe47146c7af31255a21037c04663a69dc11059a0a11bb8625389c6da061c3048a9e70c1";
   for (int i = 0; i < 2; i++) {
        jstring value = env->NewStringUTF(hash[i]);
        env->SetObjectArrayElement(valueArray, i, value);
   }
   return valueArray;
  }

MODULUS и Exponent получаются командой theses на моем компьютере:

 PBKEY_INFO=`openssl rsa -in private.pem -text -noout`
  MODULUS=`echo "$PBKEY_INFO" | grep Modulus: -A 5 | tail -5`
  echo `echo $MODULUS | tr -cd [:alnum:]`

 PREXP=`echo "$PRKEY_INFO" | grep privateExponent: -A 5 | tail -5`
 echo `echo $PREXP | tr -cd [:alnum:]`

Что не так в моем коде, пожалуйста?

byte [] decryptedData имеет нулевое значение в конце

, и я получаю следующие следы: java.security.InvalidKeyException: ключ для алгоритма RSA не подходит для симметричного шифрования.

Спасибо.

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