0

私は、次の基準を使用して暗号化された Java のファイルを復号化する任務を負っています。

暗号化:

`

byte[] masterKey;
    if (Base64.decode(config.getProperty("encrMasterKey")) != null) {
        masterKey=aes.decrypt(Base64.decode(config.getProperty("encrMasterKey")),"password");
    } else {
        masterKey = aes.keyGeneration();
        byte[] encrMasterKey = aes.encrypt(masterKey, keyderivation("password"));
       writeToConfigFile("encrMasterKey", Base64.encode(encrMasterKey));
    }
    Cipher cipher = Cipher.getInstance("AES");
    SecretKeySpec keySpec = new SecretKeySpec(masterKey, "AES");
    cipher.init(Cipher.ENCRYPT_MODE, keySpec);
    byte[] cypherText = aes.encrypt(myJSONString,masterKey);'

機能するもの:

  1. byte[] とパスワード派生キー(keyderivation("password"))の両方を使用して、AESで暗号化/復号化できます
  2. 設定ファイルから正しく保存およびロードできます。実際、テストしたところ、生成された Base64encoded( masterKey ) は Base64.encode(aes.decrypt(Base64.decode(config.getProperty("encrMasterKey")),"password"))) と同じです

できないこと:

    Cipher cipher = Cipher.getInstance("AES");
    SecretKeySpec keySpec = new SecretKeySpec(masterKey, "AES");
    cipher.init(Cipher.ENCRYPT_MODE, keySpec);

cipher.init で、Java が無効なキーまたはデフォルト パラメータ エラーをスローします。

これについてのヒントをいただければ幸いです。何日も私を悩ませ続けており、修正できないようです...

幸運をお祈りしています

4

0 に答える 0