私は、次の基準を使用して暗号化された 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);'
機能するもの:
- byte[] とパスワード派生キー(keyderivation("password"))の両方を使用して、AESで暗号化/復号化できます
- 設定ファイルから正しく保存およびロードできます。実際、テストしたところ、生成された 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 が無効なキーまたはデフォルト パラメータ エラーをスローします。
これについてのヒントをいただければ幸いです。何日も私を悩ませ続けており、修正できないようです...
幸運をお祈りしています