使用 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中文网其他相关文章!

三维空间中两线段交点坐标的求解本文将探讨如何在三维空间中求解两条线段的交点坐标,特别地,当这两条线...

如何构建HTTP请求响应监控软件?本文将探讨如何开发一款能够监控客户端HTTP请求和响应过程中的相关指标的软�...

如何解决Flink提交PyFlink作业到YarnApplication时找不到Python任务脚本的问题?当你在使用Flink提交PyFlink作业到Yarn...

Java数组扩容与奇怪的输出结果本文将分析一段Java代码,该代码旨在实现数组的动态扩容,但在运行过程中出现�...

Docker Nginx部署前端项目遇到的空白页及代理异常问题在使用Docker和Nginx部署前后端分离项目时,经常会遇到一些�...

SpringBoot3项目外部配置文件的部署方法在SpringBoot3项目开发中,我们经常需要将配置文件application.properties...

将Apache的.htaccess配置转换为Nginx的配置方法在项目开发中,经常会遇到需要将服务器从Apache迁移到Nginx的情况。Ap...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver CS6
视觉化网页开发工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3汉化版
中文版,非常好用