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. 我可以使用 AES 加密/解密,包括 byte[] 和密码派生密钥(keyderivation(“password”))
  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