ホームページ >Java >&#&チュートリアル >Java で OpenSSL AES-256-CBC 暗号化ファイルを復号化する方法

Java で OpenSSL AES-256-CBC 暗号化ファイルを復号化する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-19 16:30:10196ブラウズ

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

Java の OpenSSL で暗号化されたファイルを AES を使用して復号化する

課題:

ユーザーは次のことを行う必要があります。 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 アルゴリズムを使用する必要があります。 security.
  • OpenSSL 1.1.0c ではダイジェスト アルゴリズムが変更されました。コマンドと Java コードの両方で明示的に指定します。

以上がJava で OpenSSL AES-256-CBC 暗号化ファイルを復号化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。