使用 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 ... }
注释:
以上是如何在Java中解密OpenSSL AES-256-CBC加密文件?的详细内容。更多信息请关注PHP中文网其他相关文章!