Рубрики
Без рубрики

Декодирование данных, зашифрованных на Java, в оболочке

Как декодировать данные, зашифрованные с помощью javax.crypto. Шифр. С тегами java, aes, crypto.

Я должен предоставить данные, доступные в хранилище объектов, зашифрованном приложением 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”