我在服务器上使用OpenSSL命令加密了一个文件:
openssl enc -aes-256-ecb -salt -in ori.pdf -out encrypted.pdf -pass pass:testpassword -p
以下是加密完成后显示的密钥和盐:
salt=BE1EFCBAE984CB24
key=50B62ECEF1B777353372A44CDDC463987815F783E39D68B8EE6A0AB74A79C7FA
我曾尝试使用以下解密方式对其进行解密:
String key = "50B62ECEF1B777353372A44CDDC463987815F783E39D68B8EE6A0AB74A79C7FA";
byte[] keyBytes = key.getBytes("UTF-8");
SecretKey keySpec = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.DECRYPT_MODE, keySpec);
buffer = cipher.doFinal(buffer);
如何在Android中解密加密文件?
enc
子命令使用EVP_BytesToKey
,它可能是一个非标准混合函数。这就是子命令获取密钥和iv的地方。你可能需要复制它。我知道其他库,比如Crypto++,为互操作性提供了该功能。我认为这可能是你可以用来找到答案的问题:如何在Java中使用openssl解密加密文件,使用AES? - jww