AES密钥导出函数

2024-03-27

我有一个 bash 脚本,它使用 openssl 加密数据,并使用 Java 代码解密结果。根据我之前的post https://stackoverflow.com/questions/8343894/aes-encrypt-with-openssl-command-line-tool-and-decrypt-in-java/8352010#8352010,我现在可以在 openssl 中输入密码,并将生成的 key/iv 复制到 Java 中。这依赖于在 openssl 中使用 -nosalt 选项。我想删除该选项,并从 openssl 获取密码/salt/iv 并将其传递给 JDK 密钥派生函数。

这是我正在使用的 openssl 脚本:

#!/bin/bash
openssl enc -aes-128-cbc -in test -out test.enc -p

当我运行它并输入密码时,它会打印出以下内容。

salt=820E005048F1DF74
key=16023FBEB58DF4EB36229286419F4589
iv=DE46F8904224A0E86E8F8F08F03BCC1A

当我在 Java 中尝试相同的密码/salt/iv 时,我无法解密 test.enc。我根据@erickson的答案尝试了Java代码post https://stackoverflow.com/questions/992019/java-256bit-aes-encryption。这是片段。

SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(password, salt, 1024, 128);
SecretKey tmp = factory.generateSecret(spec);
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(iv));

如果我打印生成的“秘密”,它与 openssl 打印的“密钥”不同。我是否需要更改 Java 参数之一以匹配 openssl 派生其密钥的方式?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AES密钥导出函数 的相关文章

  • 如何用Java写入OS系统日志?

    Mac OS 有一个名为 Console 的应用程序 其中包含记录的消息 错误和故障 我相信 Windows 中的等效项是事件查看器 我想 Linux 上也有一个 但我不知道它是什么 也不知道它在哪里 是否可以像这样从 Java 输出获取消
  • 如何降低圈复杂度?

    我正在开发一个将 RequestDTO 发送到 Web 服务的类 我需要在发送请求之前验证该请求 请求可以从 3 个不同的地方发送 并且每个 请求类型 有不同的验证规则 例如请求1必须有姓名和电话号码 请求2必须有地址等 我有一个 DTO
  • H264 字节流到图像文件

    第一次来这里所以要温柔 我已经在给定的 H 264 字节流上工作了几个星期 一般注意事项 字节流不是来自文件 它是从外部源实时提供给我的 字节流使用 Android 的媒体编解码器进行编码 当将流写入扩展名为 H264的文件时 VLC能够正
  • 在哈希图中存储字符和二进制数

    我正在尝试存储字母到二进制数的映射 这是我的映射 h 001 i 010 k 011 l 100 r 101 s 110 t 111 为此 我创建了一个哈希映射并存储了键值对 我现在想显示给定句子的相应二进制值 这是我的代码 package
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • Maven 目标的默认阶段?

    据我了解 在 Maven 中 插件目标可以附加到生命周期阶段 如果没有定义 默认阶段是什么 根据我的经验 这取决于插件的目标 例如 组装 单个 http maven apache org plugins maven assembly plu
  • BigDecimal 的 JPA @Size 注释

    我该如何使用 SizeMySQL 的注释DECIMAL x y 列 我在用着BigDecimal 但是当我尝试包括 Size max它不起作用 这是我的代码 Size max 7 2 Column name weight private B
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 如何在Gradle中支持多种语言(Java和Scala)的多个项目?

    我正在尝试将过时的 Ant 构建转换为 Gradle 该项目包含约50个Java子项目和10个Scala子项目 Java 项目仅包含 Java Scala 项目仅包含 Scala 每个项目都是由 Java 和 Scala 构建的 这大大减慢
  • 无法在 Mac OS X 上启动应用程序 我收到错误 LSOpenURLsWithRole() 应用程序失败,错误为 -10810

    问题 我正在尝试启动一个应用程序 遗传网络分析仪 http www genostar com category products gna 但它默默地失败了 使用时open gna app产生以下错误消息 LSOpenURLsWithRole
  • JavaFx 中装饰且不可移动的舞台

    我想在 JavaFx 中创建一个装饰舞台 它也将不可移动 我正在从另一个控制器类创建这个阶段 我能够创造和展示舞台 但它是自由移动的 我怎样才能创建这个 非常感谢帮助和建议 我把打开新关卡的方法贴出来 private void addRec
  • fsockopen() 和 SSL 出错,“无法启用加密”

    我正在尝试连接到 Nominet EPP 测试台 但收到 无法启用加密 的消息 这似乎是一个罕见的错误 没有记录的解决方案或原因 用行 socket fsockopen ssl testbed epp nominet org uk 700
  • Java 中 static 关键字如何工作?

    我正在阅读Java教程 http docs oracle com javase tutorial index html从一开始我就有一个问题static字段或变量上的关键字 作为Java said here http docs oracle
  • NoSuchMethodError:将 Firebase 与应用程序引擎应用程序集成时

    我试图将 firebase 实时数据库与谷歌应用程序引擎应用程序集成 我在调用时收到此错误 gt DatabaseReference ref FirebaseDatabase gt getInstance gt getReference t
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • 使用 Cucumber Scenario Outline 处理 Excel 电子表格

    如果可能的话 我试图找到一种更优雅的方法来处理从与 Excel 电子表格行 第 n 个 相关的 Cucumber Scenario Outline 中调用第 n 个数字 目前 我正在使用迭代编号来定义要从中提取数据的 Excel 电子表格的
  • java中wav文件转换为字节数组

    我的项目是 阿塞拜疆语音的语音识别 我必须编写一个程序来转换wav文件到字节数组 如何将音频文件转换为byte 基本上如第一个答案中的片段所描述 但不是BufferedInputStream use AudioSystem getAudio
  • JPA - 非主键字段上的 @OneToOne 关系不起作用

    我有一个 Spring Data JPA 后端 使用 Hibernate 作为 ORM 实现 这是模型 Person MailConfig id PK uid PK FK Person uid uid Entity
  • 需要使用 openssl 加密和解密文件的示例 C 代码

    我正在用 Linux C 编写代码 我需要使用以下命令来加密和解密文件 openssl 目前 我使用系统命令 des3 e nosalt k 0123456789012345 in inp file out out file 进行加密 使用
  • C/C++ 通过 Android NDK 在 JNI 中看不到 Java 方法

    我正在尝试从使用 NDK 构建的 C 类文件调用 Java 方法 它不断抛出常见的 未找到非静态方法 错误并导致整个 Android 应用程序崩溃 下面的代码片段 有些东西可能不需要 但我按原样保留它们 因为焦点 问题在于refreshJN

随机推荐

  • 如何仅获取 Rails 路由中的查询字符串?

    我正在使用这样的路线 match v1 method gt v1 index 我的目的是捕获 api 方法的名称 然后将请求发送到控制器内的该方法 def index self send params method params end 我
  • Java递归问题

    我在Java中遇到了一个递归面试问题 需要你的帮助 Write a Java function 这样 给定一个 int 数组 是否可以将 int 分为两组 使两组之和相同 并具有以下约束 所有 5 的倍数的值必须在一组中 并且所有是 3 的
  • C 向量/数组列表/链接列表

    我正在用 C 语言编写一个小程序 我需要一种向量 ArrayList LinkedList 但我正在使用 C 语言 知道如何在 C 语言中做这种事情吗 我想存储结构 然后添加 删除一些结构 对于可调整大小的数组 您可以使用malloc an
  • PostgreSQL 中的约束和断言

    我正在尝试创建一个简单的数据库 其中有一个客户数据表和一个订单数据表 我正在尝试编写一个约束 使客户在某一天订购的商品数量不能超过特定数量 这是我所拥有的 CREATE TABLE CUSTOMER CUSTOMER NUM CHAR 3
  • python 正则表达式:用单个子替换地址中的 st、and、the 等

    我有很多地址 例如 东 19 街 或 西 141 街 我想在一次 re sub 调用中删除 th 和 st re sub d st d nd d rd d th g lt 1 gt East 19th Street 不起作用 因为它并不总是
  • 当宏注释不能在定义它的同一编译中使用时,这意味着什么?

    我对这个说法很好奇 错误 3 18 另一种可能性是您尝试使用宏 定义它的同一编译运行中的注释 我尝试谷歌搜索并发现了这个 最后 请记住 使用宏需要分两步进行编译 首先编译宏 然后编译使用宏的代码 这是必要的 以便您的宏可以在编译其余代码之前
  • .Net 中值类型有什么用?

    The 官方指南 http msdn microsoft com en us library y23b5415 aspx表明这些的实际用途很少 有没有人有例子说明他们在哪里充分利用了它们 相反 您会发现 C C 人们涌向结构 又称值类型 一
  • 如何在 python 中对 POST 方法进行单元测试?

    我有一个方法可以将包含 JSON 的 POST 发送到 Elasticsearch 实例 我正在尝试编写一个单元测试来验证发送的 JSON 的内容 但我不确定如何进行 我应该在 python 中创建一个本地服务器并让它验证 POST 的内容
  • .NET 4 构建期间未找到 LC.exe 文件

    我在迁移到 net 4 0 时遇到问题 在尝试构建时出现以下错误 C WINDOWS Microsoft NET Framework v4 0 30319 Microsoft Common targets 1917 9 error MSB3
  • vb6 打开文件以追加问题路径未找到

    Open App Path Folder str 0 For Output 似乎找不到一条路径 但是如果就在这之前我就找到了 MsgBox App Path Folder str 0 它提供了我想要的正确目录 文件名 如果我用引号中的直接路
  • 有没有办法访问之前在“heightForRowAtIndexPath”中计算的行高?

    我在方法 heightForRowAtIndexPath 中计算行的高度 但我需要在方法 cellForRowAtIndexPath 中使用该值 有没有办法访问已经计算的值 或者我需要再次进行计算 Thks Gotye None
  • Rails 使用缩写对模型进行非正统命名

    在我正在构建的应用程序中 我使用以下命令在数据库中存储 XML 文件acts as tree协会 我想给班级起个名字XMLElement但这会偏离轨道 因为大写是非标准的 它正在寻找XMLElement从文件名xml element rb
  • Scavenger:分配失败 - JavaScript 堆内存不足

    这是错误消息 lt Last few GCs gt 2383 0x7efe08001450 6100 ms Scavenge 30 3 39 5 gt 30 5 42 7 MB 73 5 0 0 ms average mu 1 000 cu
  • 为什么“git mergetool”(meld)显示冲突标记?

    为什么 git mergetool meld 向我显示带有 conclict 标记的祖先视图 这是完全错误的 我一直不明白为什么会这样做 我该如何修复它 应该显示 3 路合并 Your Changes Common Base Upstrea
  • chaquopy代码在哪个目录中搜索Android应用程序代码的Python代码中导入的Python包

    我已在 chaquopy Android 应用程序的 Python 代码的主要方法中导入了 nltk 库 它要求我实施nltk download punkt 供我处理 所以我想知道 代码在哪个目录中查找包 以便我可以在所需的文件夹中下载它们
  • 如何将数据传回父窗口?

    我找到了一个链接 显示如何将参数发送回打开器浏览器窗口 但它仅适用于window showmodal 如果我使用的话 应该有一个简单的方法可以做到同样的事情window open right 如果您使用 window open 则可以调用父
  • QThread::start(优先级) 与 Linux

    我正在使用一些QThread基于 KDE Neon 18 04 中的工作线程 基于 Ubuntu 18 04 内核 4 15 0 46 generic 工作线程干扰了我的桌面应用程序 因此我决定降低它们的优先级 Qt 文档QThread s
  • Syslog 真的有 1KB 消息限制吗?

    Syslog 似乎有 1KB 消息限制 这是硬编码到 Syslog 协议中的 还是可以为每个服务器设置的参数 我希望我读到的文章已经过时 所以如果您有任何信息 请分享 这是正确的 正如在系统日志协议 RFC https www rfc ed
  • 从 PHP/Apache 返回 100-Continue

    我正在尝试找到一种方法来防止脚本将不必要的数据上传到 PHP 脚本 我最初试图终止传入的读取连接 这显然违反了 HTTP 协议 我无法让它工作 但我一直在研究替代方案 发现100 Continue状态码正是我所需要的 我的客户应该发送所需的
  • AES密钥导出函数

    我有一个 bash 脚本 它使用 openssl 加密数据 并使用 Java 代码解密结果 根据我之前的post https stackoverflow com questions 8343894 aes encrypt with open