>Java >java지도 시간 >Java에서 OpenSSL AES-256-CBC 암호화된 파일을 해독하는 방법은 무엇입니까?

Java에서 OpenSSL AES-256-CBC 암호화된 파일을 해독하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-19 16:30:10218검색

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

AES를 사용하여 Java에서 OpenSSL로 암호화된 파일 암호 해독

도전 과제:

사용자는 다음을 수행해야 합니다. openssl 명령을 사용하여 UNIX에서 암호화된 파일을 해독합니다. Java의 AES-256-CBC 암호화. 비밀번호도 필요합니다.

Java를 사용한 OpenSSL 복호화:

OpenSSL은 자체 비밀번호 기반 키 파생 방법을 사용합니다. 암호문도 암시적으로 Base64로 인코딩됩니다.

암호 알고리즘 정의:

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

Java 구현:

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 ...
}

참고:

  • ASCII 문자 집합이 지정되었지만 실제 문자 집합은 다를 수 있습니다.
  • NIST 승인 PBKDF2 알고리즘을 사용하여 개선해야 합니다. 보안.
  • OpenSSL 1.1.0c는 다이제스트 알고리즘을 변경했습니다. 명령과 Java 코드 모두에서 명시적으로 지정하세요.

위 내용은 Java에서 OpenSSL AES-256-CBC 암호화된 파일을 해독하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.