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

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

Linda Hamilton
Linda Hamilton원래의
2024-12-14 07:46:11595검색

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

CBC 모드에서 OpenSSL의 AES로 암호화된 Java의 파일 암호 해독

OpenSSL은 솔트 기반 비밀번호 키 파생 방법과 base64 MIME을 사용하여 파일을 암호화합니다. 부호화. Java에서 이러한 파일을 해독하려면 다음 단계를 따르세요.

  1. 솔트 및 키 생성:

    salt = random(8)
    keyAndIV = EVP_BytesToKey(password, salt, 48)
    key = keyAndIV[0..31]
    iv = keyAndIV[32..47]
  2. 소금을 추출하고 암호문:

    base64로 인코딩된 파일에서:

    • Salt: 바이트 8-15
    • 암호문: 바이트 16 이후
  3. 복호화:

    aesCBC.init(Cipher.DECRYPT_MODE, key, iv)
    plaintext = aesCBC.doFinal(ciphertext)
  4. OpenSSL EVP_BytesToKey 구현:

    public static byte[][] EVP_BytesToKey(int key_len, int iv_len, MessageDigest md,
            byte[] salt, byte[] data, int count) {
        // ...
    }
  5. 주요 복호화 방법:

    public static void main(String[] args) {
        // ...
    }

추가 참고:

  • 문자 집합으로 ASCII를 일관되게 사용합니다.
  • OpenSSL과 Java 모두에서 다이제스트 알고리즘(MD5 또는 SHA-256)을 지정합니다.
  • 보안 강화를 위해 PBKDF2를 사용하세요.
  • OpenSSL 다이제스트 알고리즘의 변경 사항에 유의하세요. 버전입니다.

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

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