Heim >Java >javaLernprogramm >Wie entschlüssele ich mit OpenSSL AES-256-CBC verschlüsselte Dateien in Java?

Wie entschlüssele ich mit OpenSSL AES-256-CBC verschlüsselte Dateien in Java?

Susan Sarandon
Susan SarandonOriginal
2024-12-19 16:30:10196Durchsuche

How to Decrypt OpenSSL AES-256-CBC Encrypted Files in Java?

Mit OpenSSL in Java verschlüsselte Datei mit AES entschlüsseln

Herausforderung:

Benutzer müssen Entschlüsseln Sie eine in UNIX verschlüsselte Datei mit dem Befehl openssl mit AES-256-CBC-Verschlüsselung in Java. Das Passwort ist ebenfalls erforderlich.

OpenSSL-Entschlüsselung mit Java:

OpenSSL verwendet eine eigene passwortbasierte Schlüsselableitungsmethode. Der Chiffretext ist auch implizit als Base64 kodiert.

Kryptischer Algorithmus definiert:

salt = random(8)
keyAndIV = BytesToKey(password, salt, 48)
Taste = keyAndIV[0..31]
iv = keyAndIV[32..47]
ct = AES-256-CBC-encrypt(key, iv, plaintext)

Java Implementierung:

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.security.GeneralSecurityException;
import java.security.MessageDigest;
import java.util.Arrays;
import java.util.List;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

import org.bouncycastle.util.encoders.Base64;

public class OpenSSLDecryptor {
    // ... Code as in the given answer ...
}

Hinweise:

  • ASCII-Zeichensatz ist angegeben, der tatsächliche Zeichensatz kann jedoch variieren.
  • Zur Verbesserung der Sicherheit sollte der vom NIST genehmigte PBKDF2-Algorithmus verwendet werden.
  • OpenSSL 1.1.0c hat seinen Digest-Algorithmus geändert. Geben Sie es sowohl im Befehl als auch im Java-Code explizit an.

Das obige ist der detaillierte Inhalt vonWie entschlüssele ich mit OpenSSL AES-256-CBC verschlüsselte Dateien in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn