首頁 > Java > java教程 > 如何在Java中解密OpenSSL AES-256-CBC加密檔案?

如何在Java中解密OpenSSL AES-256-CBC加密檔案?

Susan Sarandon
發布: 2024-12-19 16:30:10
原創
190 人瀏覽過

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)
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 ...
}
登入後複製

Java實作:

  • 註解:
  • 指定了:
指定了實際字符集可能會有所不同。 應使用 NIST 核准的 PBKDF2 演算法來改善安全性。 OpenSSL 1.1.0c 更改了其摘要演算法。在命令和 Java 程式碼中明確指定它。

以上是如何在Java中解密OpenSSL AES-256-CBC加密檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板