Я должен предоставить данные, доступные в хранилище объектов, зашифрованном приложением Java на сайте php.
Прежде всего, я получаю зашифрованные данные с помощью clone .
Это простая галочка с помощью команды sell
rclone cat "xda:pre-xda-data/001136/00004578..zip"
когда rclone правильно настроен .
Теперь второй шаг: расшифруйте данные. Я не смог использовать openssl : пароль зашифрован совершенно другим способом .
На данный момент я написал небольшую java-программу, которая получала зашифрованные данные из stdin и записывала расшифрованные данные в stdout.
import java.io.InputStream; import java.io.IOException; import javax.crypto.Cipher; import javax.crypto.CipherInputStream; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.Charset; import java.lang.IllegalArgumentException; import java.security.NoSuchAlgorithmException; import javax.crypto.NoSuchPaddingException; import java.security.InvalidKeyException; class Decode { public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException,InvalidKeyException,IOException { if (args.length != 1) { throw new IllegalArgumentException("Missing password"); } String storageAesKey = args[0]; byte[] raw = storageAesKey.getBytes(Charset.forName("UTF-8")); if (raw.length != 16) { throw new IllegalArgumentException("Invalid key size."); } SecretKeySpec key = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE, key); InputStream input = new CipherInputStream(System.in,cipher); input.transferTo(System.out); input.close(); } }
На данный момент я могу объединить эти две команды
rclone cat "xda:pre-xda-data/001136/00004578..zip" | java -cp /opt/javadecript Decode "password"
и выполните команду php passthru
passthru ('rclone cat "xda:pre-xda-data/001136/00004578..zip" | java -cp /opt/javadecript Decode "password"');
У кого-нибудь есть идея получше?
Оригинал: “https://dev.to/caiofior/decode-data-encrypted-in-java-in-shell-f1a”